Docker Toolbox 를 다운받아 Docker 를 설치한다.
설치 방법은 Windows 나 Mac OS X 에서나 거의 흡사하다.
Docker Toolbox 구성
- Docker Machine
- Docker Engine
- Docker GUI (Kitematic)
- Docker Compose (윈도우즈 설치시 제외)
- CLI
- Oracle VM VirtualBox
Docker 데몬이 리눅스 커널을 사용하기 때문에, 윈도우즈에서 Docker 를 사용하려면 docker-machine 을 이용해서 Docker VM 을 생성하고 연결해야 한다.
Docker VM 은 윈도우에서 Docker 데몬을 실행하기 위해 특별히 만든 초경량 리눅스 가상 머신이다.
요구사항
- Windows 7 이상
- Microsoft® Hardware-Assisted Virtualization Detection Tool 설치 http://www.microsoft.com/en-us/download/details.aspx?id=592
주의
- 리눅스 상에서 Docker 를 설치하면, Docker 는 localhost 상에서 직접 실행되므로 localhost:8000 식으로 포트를 할당할 수 있다.
- 윈도우즈에서 Docker 데몬은 리눅스 가상 머신에서 실행되므로 리눅스 가상 머신에는 localhost 가 아닌 사설 IP 가 할당된다. ex) 192.168.99.100:2345
다운로드 & 설치
- Docker Toolbox https://www.docker.com/toolbox
- 만약 VirtualBox 나 Git 이 이미 설치되어 있으면 업데이트 된다.
Docker 접속 후 컨테이너(이미지) 실행하기
- Docker Quickstart terminal 사용하는 방법과 CMD 를 사용하는 방법이 있다.
- 컨테이너와 이미지의 구분... 컨테이너는 이미지를 Docker Engine 에서 실행하면 메모리에 저장되는 인스턴스이다. 이미지를 실행한 이미지 안의 어플리케이션을 담고 있다고 보면 된다. 이미지를 여러개 실행하면 여러 컨테이너가 생성된다.
Docker Quickstart terminal 사용하여 Docker 컨테이너 실행하기
- 바탕화면에 생성된 Docker Quickstart Terminal 아이콘을 클릭하면, 자동으로 default VM 을 만들어 Docker 를 실행한다.
- 생성된 default VM 은 계속해서 사용할 수 있다.
- 터미널에서 docker -v 를 실행하여 정상 작동하는지 확인한다.
- 생성된 default VM 에는 리눅스 OS가 full 이미지로 깔린 것처럼 느낄 수 있지만, 사실 OS 구동에 필요한 자원들은 Host OS(여기서는 윈도우즈)의 것을 공유하여 사용하고, 서버 운영에 필요한 라이브러리와 프로그램만 설치되어 OS 이미지 용량을 크게 줄인 것이 일반 VM 과의 다른 점이다.
CMD 사용하여 Docker 컨테이너 실행하기
- Docker Quickstart Terminal 을 사용하지 않고 CMD 로 직접 VM 을 만드는 방법이다.
1. Docker VM 생성
C:\Users\hklee>docker-machine create --driver virtualbox default Running pre-create checks... Creating machine... (default) Copying C:\Users\hklee\.docker\machine\cache\boot2docker.iso to C:\Users\hklee\.docker\machine\machines\default\boot2docker.iso... (default) Creating VirtualBox VM... (default) Creating SSH key... (default) Starting VM... Waiting for machine to be running, this may take a few minutes... Machine is running, waiting for SSH to be available... Detecting operating system of created instance... Detecting the provisioner... Provisioning with boot2docker... Copying certs to the local machine directory... Copying certs to the remote machine... Setting Docker configuration on the remote daemon... Checking connection to Docker... Docker is up and running! To see how to connect Docker to this machine, run: docker-machine env default | cs |
create 명령으로 default 라는 VM 이 새로 생성되었다.(VM 이름은 default 대신 다른 것으로 바꿔도 된다.)
출력문의 마지막에 쓰인것 처럼 docker-machine env default 명령으로 생성된 VM 에 접속한다.
2. 로컬 컴퓨터에서 default VM 에 접속하기 위해 환경 설정하기
C:\Users\hklee>docker-machine env default You can further specify your shell with either 'cmd' or 'powershell' with the --shell flag. SET DOCKER_TLS_VERIFY=1 SET DOCKER_HOST=tcp://192.168.99.102:2376 SET DOCKER_CERT_PATH=C:\Users\hklee\.docker\machine\machines\default SET DOCKER_MACHINE_NAME=default REM Run this command to configure your shell: REM FOR /f "tokens=*" %i IN ('docker-machine env default') DO %i | cs |
default Docker VM 에 접속할 IP, PORT, PATH 등이 준비되었다.
출력문의 마지막에 쓰인 명령으로 생성된 VM 에 접속한다.
FOR /f "tokens=*" %i IN ('docker-machine env default') DO %i
or FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd default') DO %i (터미널마다 다름)
3. default VM 에 접속
C:\Users\hklee>FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd default') DO %i C:\Users\hklee>SET DOCKER_TLS_VERIFY=1 C:\Users\hklee>SET DOCKER_HOST=tcp://192.168.99.105:2376 C:\Users\hklee>SET DOCKER_CERT_PATH=C:\Users\hklee\.docker\machine\machines\default C:\Users\hklee>SET DOCKER_MACHINE_NAME=default | cs |
4. 접속 테스트
C:\Users\hklee>docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world b901d36b6f2f: Pull complete 0a6ba66e537a: Pull complete Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7 Status: Downloaded newer image for hello-world:latest Hello from Docker. This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker Hub account: https://hub.docker.com For more examples and ideas, visit: https://docs.docker.com/userguide/ | cs |
새로운 hello-world 이미지를 다운받아서 실행해 보았다.
로컬에 이미지가 없기 때문에 hub 에서 이미지를 pull 하여 실행한 것이다.
이로써 docker VM 을 생성하고 접속하는 것까지 마무으리!