ENTRYPOINT
지정 컨테이너가 시작될 때 항상 실행됩니다 명령.
에 CMD
전달 될 인수를 지정합니다 ENTRYPOINT
.
특정 명령 전용 이미지를 만들려면 ENTRYPOINT ["/path/dedicated_command"]
그렇지 않으면 일반적인 용도로 이미지를 만들려면에 ENTRYPOINT
지정하지 않고 CMD ["/path/dedicated_command"]
인수를 제공하여 설정을 무시할 수 있으므로 사용할 수 없습니다 docker run
.
예를 들어 Dockerfile이 다음과 같은 경우
FROM debian:wheezy
ENTRYPOINT ["/bin/ping"]
CMD ["localhost"]
인수없이 이미지를 실행하면 localhost가 ping됩니다.
$ docker run -it test
PING localhost (127.0.0.1): 48 data bytes
56 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.096 ms
56 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.088 ms
56 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.088 ms
^C--- localhost ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.088/0.091/0.096/0.000 ms
이제 인수로 이미지를 실행하면 인수를 핑합니다.
$ docker run -it test google.com
PING google.com (173.194.45.70): 48 data bytes
56 bytes from 173.194.45.70: icmp_seq=0 ttl=55 time=32.583 ms
56 bytes from 173.194.45.70: icmp_seq=2 ttl=55 time=30.327 ms
56 bytes from 173.194.45.70: icmp_seq=4 ttl=55 time=46.379 ms
^C--- google.com ping statistics ---
5 packets transmitted, 3 packets received, 40% packet loss
round-trip min/avg/max/stddev = 30.327/36.430/46.379/7.095 ms
Dockerfile이 다음과 같은 경우 비교하십시오.
FROM debian:wheezy
CMD ["/bin/ping", "localhost"]
인수없이 이미지를 실행하면 localhost가 ping됩니다.
$ docker run -it test
PING localhost (127.0.0.1): 48 data bytes
56 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.076 ms
56 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.087 ms
56 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.090 ms
^C--- localhost ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.076/0.084/0.090/0.000 ms
그러나 인수로 이미지를 실행하면 인수가 실행됩니다.
docker run -it test bash
root@e8bb7249b843:/#
자세한 내용은 Brian DeHamer 의이 기사를 참조하십시오 :
https://www.ctl.io/developers/blog/post/dockerfile-entrypoint-vs-cmd/