¿Cuál es la diferencia entre los comandos docker run
y docker create
?
Normalmente lo uso run
pero a veces veo en la documentación create
.
Docker --help
dice
create Create a new container
run Run a command in a new container
¿Significa que run
se usa cuando necesitamos pasar un comando a un nuevo contenedor? ¿Cuál es el objetivo create
entonces?
Técnicamente,
docker run
=docker create
+docker start
.fuente
docker run
=docker create
+docker start
+docker attach
. Sinattach
, el contenedor iniciado se ejecuta en segundo planodocker create
comando crea un contenedor de escritura a partir de la imagen y lo prepara para su ejecución .docker run
comando crea el contenedor (igual quedocker create
) y lo inicia .fuente
Las otras respuestas tienen esto cubierto, pero pensé que mostraría las líneas de comando de shell equivalentes porque lo deja muy claro:
es lo mismo que
Aquí,
docker create
se usa para crear un contenedor a partir de la imagen nombrada y genera la identificación del contenedor creada ydocker start
se usa para iniciar el contenedor con esa identificación. La-a
opción hace que la terminal se conecte para que el contenedor se ejecute en primer plano, que es el comportamiento predeterminado dedocker run
.Un contenedor que se ha creado pero nunca se inició tendrá un
Created
estado; esto se puede ver condocker container ls -a
.fuente
Soy nuevo en Docker y acabo de empezar a jugar con él;
Mi opinión es que docker run esencialmente hace lo siguiente: (en el orden de ..) docker create , docker start , docker attach , ya que se conecta inmediatamente al shell activo después de ejecutar el comando 'ejecutar' .
fuente
La ejecución de Docker es básicamente para ejecutar comandos en el contenedor.
Lo anterior es para crear una terminal bash. Y haznos usar comandos bash en el contenedor.
Docker create consiste en crear un contenedor a partir de una imagen de Docker.
Lo anterior es para crear una ventana acoplable un contenedor con el nombre "docker-ubuntu" a partir de la imagen "ubuntu"
fuente
docker run -it <Container name>
prescindir de hacer / bin / bash. Por ejemplo, ruby one ejecutará automáticamente un ejecutable llamado irb. Además, puede ejecutar -d, eso se hace con dockersamples / static-site que no inicia sesión. Así que creo que no funciona como ejecutivo, pero simplemente lo inicia.