tengo una imagen de python llamada python-example con container_id = c08e4ee85879
Dentro existe un script de python que imprime hello world
print "HELLO WORLD" si ejecuto mi imagen: docker run python-example la salida HELLO WORLD se imprimirá en mi terminal y luego se cerrará el contenedor.
Cuando trato de ingresar al contenedor para realizar un cambio en el script a través de vim, salgo del contenedor y confirmo el cambio en una nueva imagen y luego intento ejecutar la nueva imagen, no se imprime nada. Vea los pasos a continuación
docker run -it python-example bash vim file.py #make some changes by adding a new print statement "HELLO WORLD 2" exit docker commit c08e4ee85879 python-example2 docker run python-example2 #now nothing gets printed to terminal screenCuando ingreso la nueva imagen, ejecuto python file.py, la salida se imprime.
docker run -it python-example2 bash python file.py "HELLO WORLD" "HELLO WORLD 2"¿Por qué esto es tan? ¿No es posible que una imagen se ejecute cuando los cambios se confirman en bash?
Solución
Cambia tu confirmación a:
docker commit --change='CMD ["python", "file.py"]' c08e4ee85879 python-example2Explicación
Cuando corres:
docker run -it python-example bash
está cambiando su comando predeterminado (que es python file.py a bash ).
Puede consultar con docker ps .
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c08e4ee85879 python-example "bash" 32 seconds ago Up 30 seconds thirsty_hugleVerifique la referencia de dockerfile - CMD para obtener más información
Con --change='CMD ["python", "file.py"]' obtienes el comando deseado.