고래등에 올려진 컨테이너 박스들처럼 프로그램과 실행에 필요한 것들을 컨테이너에 Shipping.
컨테이너를 손쉽게 이동해서 어디서나 간단하게 실행할 수 있는 도구와 환경을 제공하는 오픈 소스 플랫폼이다.
docker를 쓰는 이유는 호환성이 뛰어나고, 개발 운영에 아주 편리하기 때문이다.
Virtual Machines은 애플리케이션 자체와 필요한 바이러니/라이브러리뿐만 아니라 OS 전체가 포함된다.
하지만 Docker Engine Container은 애플리케이션과 꼭 필요한 바이너리/라이브러리만 갖추고 있다. OS상의 사용자 공간에 격리된 프로세스로 구동되기 때문에 가상머신의 이점을 누리면서 이동성이 훨씬 뛰어나다.
- 시작시간
하드웨어 가상화는 CPU,메모리,하드 디스크 등의 하드웨어를 가상화하고 있기 때문에 하드웨어나 OS부팅해야 하므로 부팅에 시간소요가 발생한다.
컨테이너형 가상화에서는 부팅시 OS는 이미 시작하고 프로세스의 시작만 하므로 부팅 소요시간이 절약된다.
- 오버헤드
OS에서 응용 프로그램을 작동하는 경우,
하드웨어 가상화에서는 가상화된 하드웨어 및 하이퍼바이저를 통해 처리하기 때문에 물리적 시스템보다 처리에 부가적인 오버헤드가 필요하다.
컨테이너형 가상화는 커널을 공유하고 개별 프로세스가 작업을 하는 것과 같은 정도의 시간밖에 걸리지 않기 때문에 대부분 오버헤드가 없다.
Docker를 사용할 때 리눅스 환경인 이유는 린눅스 커널기능들을 쓰기 때문이다.
1) 독립된 공간 형성 -> chroot
2) isolate 기능 지원 -> namespace
3) 필요한 만큼만 하드웨어를 지원 -> cgroup
<만약 윈도우나 맥에서 사용할 경우 하이퍼바이저 위에 도커엔진을 설치한다 -> 부하 가능성 있음>
Docker 설치 따라하기
- putty로 ec2 접속.
- sudo apt install apt-transport-http 입력 (http접근을 위한 apt)
- sudo apt install ca-certificates 입력 (ssl 디지털 서명)
- sudo apt install curl 입력 (특정 사이트에서 다운로드 받을 때)
- sudo apt install software-properties-common (소스코드 받으면 자동패키지화 해줌)
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
(도커 다운로드)
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" sudo apt update 입력
(저장소에 url 추가, 도커 자동 연결 update)
- sudo apt update 해주기
- apt-cache policy docker-ce(도커 설치)
sudo apt install docker-ce(도커 설치)- sudo systemctl status docker (도커 설치 확인)
이미지 다운받기 <컨테이너 생성>
- sudo docker pull hello-world 입력
- sudo docker images를 입력해 hello-world 확인
- sudo docker run hello-world 입력해 hello-world 컨테이너 만들기
- sudo docker ps -a 입력해 컨테이너 확인하기
- sudo docker rm 4604c9c6197b<컨테이너 아이디> 입력해 컨테이너를 삭제해봄