- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
Dockerfile 자세히 알아보기
CMD
CMD는 컨테이너가 시작되었을 때 스크립트 혹은 명령을 실행합니다. 즉 docker run
명령으로 컨테이너를 생성하거나, docker start
명령으로 정지된 컨테이너를 시작할 때 실행됩니다. CMD는 Dockerfile에서 한 번만 사용할 수 있습니다.
셸(/bin/sh)로 명령 실행하기
CMD touch /home/hello/hello.txt
CMD <명령>
형식이며 셸 스크립트 구문을 사용할 수 있습니다. FROM으로 설정한 이미지에 포함된 /bin/sh 실행 파일을 사용하게 되며 /bin/sh 실행 파일이 없으면 사용할 수 없습니다.
셸 없이 바로 실행하기
CMD ["redis-server"]
셸 없이 바로 실행할 때 매개 변수 설정하기
CMD ["mysqld", "--datadir=/var/lib/mysql", "--user=mysql"]
CMD ["<실행 파일>", "<매개 변수1>", "<매개 변수2>"]
형식입니다. 실행 파일과 매개 변수를 배열 형태로 설정합니다. FROM으로 설정한 이미지의 /bin/sh 실행 파일을 사용하지 않는 방식입니다. 셸 스크립트 문법이 인식되지 않으므로 셸 스크립트 문법과 관련된 문자를 그대로 실행 파일에 넘겨줄 수 있습니다.
ENTRYPOINT를 사용하였을 때
ENTRYPOINT ["echo"]
CMD ["hello"]
CMD ["<매개 변수1>", "<매개 변수2>"]
형식입니다. ENTRYPOINT에 설정한 명령에 매개 변수를 전달하여 실행합니다. Dockerfile에 ENTRYPOINT가 있으면 CMD는 ENTRYPOINT에 매개 변수만 전달하는 역할을 합니다. 그래서 CMD 독자적으로 파일을 실행할 수 없게 됩니다.
다음과 같이 Dockerfile을 빌드하여 컨테이너를 생성하면 hello가 출력됩니다.
$ sudo docker build --tag example .
$ sudo docker run example
hello
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.