##CMD y ENTRYPOINT##
El ENTRYPOINT especifica un comando que siempre se ejecutará cuando se inicie el contenedor.
El CMD especifica los argumentos que se ENTRYPOINT al ENTRYPOINT .
Si desea hacer una imagen dedicada a un comando específico, utilizará ENTRYPOINT ["/path/dedicated_command"]
De lo contrario, si desea hacer una imagen para fines generales, puede dejar ENTRYPOINT especificar y usar CMD ["/path/dedicated_command"] ya que podrá anular la configuración al proporcionar argumentos a la docker run .
#Por ejemplo, si su Dockerfile es:
FROM debian:wheezy
ENTRYPOINT ["/bin/ping"]
CMD ["localhost"]
#Ejecutar la imagen sin ningún argumento hará ping al localhost:
$ 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
#Ahora, ejecutar la imagen con un argumento hará ping al argumento:
$ 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
##Para comparación, si su Dockerfile es:
FROM debian:wheezy
CMD ["/bin/ping", "localhost"]
#Ejecutar la imagen sin ningún argumento hará ping al localhost:
$ 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
#Pero ejecutar la imagen con un argumento ejecutará el argumento:
docker run -it test bash
root@e8bb7249b843:/#
docker run -it test echo hola
##En nuestra imagen de jboss ENTRYPOINT $JBOSS_HOME/bin/standalone.sh
##Lanzamos la imagen arrancando solo el proceso de bash en el contenedor
docker run -dit --entrypoint bash --name jboss1 jboss-eap-mysql-centos-jdk