가장 빨리 만나는 Docker 4장 - 3. build 명령으로 이미지 생성하기

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

Docker 이미지 생성하기

이재홍 http://www.pyrasis.com 2014.08.02 ~ 2014.09.20

build 명령으로 이미지 생성하기

Dockerfile을 작성하였으면 이미지를 생성합니다. Dockerfile이 저장된 example 디렉터리에서 다음 명령을 실행합니다.

~/example$ sudo docker build --tag hello:0.1 .

docker build <옵션> <Dockerfile 경로> 형식입니다. --tag 옵션으로 이미지 이름과 태그를 설정할 수 있습니다. 이미지 이름만 설정하면 태그는 latest로 설정됩니다.

잠시 기다리면 이미지 파일이 생성됩니다. 이미지 목록을 출력합니다.

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED                  VIRTUAL SIZE
ubuntu              14.04               e54ca5efa2e9        Less than a second ago   276.1 MB
ubuntu              latest              e54ca5efa2e9        Less than a second ago   276.1 MB
hello               0.1                 2031ee0736e8        9 minutes ago            298.4 MB

hello:0.1 이미지가 생성되었습니다. 이제 실행을 해봅니다.

$ sudo docker run --name hello-nginx -d -p 80:80 -v /root/data:/data hello:0.1
  • -d 옵션은 컨테이너를 백그라운드로 실행합니다.
  • -p 80:80 옵션으로 호스트의 80번 포트컨테이너의 80번 포트를 연결하고 외부에 노출합니다. 이렇게 설정한 뒤 http://<호스트 IP>:80에 접속하면 컨테이너의 80번 포트로 접속됩니다.
  • -v /root/data:/data 옵션으로 호스트의 /root/data 디렉터리를 컨테이너의 /data 디렉터리에 연결합니다. /root/data 디렉터리에 파일을 넣으면 컨테이너에서 해당 파일을 읽을 수 있습니다.

실행된 컨테이너 목록을 출력합니다.

$ sudo docker ps
CONTAINER ID  IMAGE      COMMAND  CREATED         STATUS         PORTS                        NAMES
3c06a0bebab6  hello:0.1  nginx    10 minutes ago  Up 10 minutes  443/tcp, 0.0.0.0:80->80/tcp  hello-nginx

hello-nginx 컨테이너가 실행되었습니다.

웹 브라우저를 실행하고, http://<호스트 IP>:80으로 접속합니다. Welcome to nginx! 페이지가 표시될 것입니다.

Mac OS X, Windows에서 Boot2Docker를 사용한다면?
Boot2Docker는 가상 머신 안에 도커를 실행한 상태이기 때문에 호스트 IP로는 nginx에 접속할 수 없습니다. 따라서 다음 명령을 실행하여 Boot2Docker의 가상 머신 IP를 알아냅니다(Windows에서는 Git Bash를 실행한 뒤 명령을 실행합니다).

$ boot2docker ip
The VM's Host only interface IP address is: 192.168.59.103

웹 브라우저를 실행하고, http://<Boot2Docker VM의 IP>:80으로 접속합니다. Welcome to nginx! 페이지가 표시될 것입니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

2014-11-30