Cómo utilizar el comando Ejecutar de Docker [Beginners Guide]
El comando docker run se usa para lanzar y ejecutar contenedores. Aprendiendo a usar docker run
El comando es una recomendación para cualquier desarrollador que quiera familiarizarse con Docker.
Cuando se trabaja con Docker, los desarrolladores de software utilizan principalmente el comando ‘docker run’ para:
- Crea un contenedor a partir de una imagen de ventana acoplable determinada
- Ejecute un contenedor con un nombre opcional
- Ejecutar un contenedor en primer plano
- Ejecute un contenedor en el modo separado
- Ejecute un contenedor en modo interactivo
- Publicar puertos de contenedor en la máquina host
- Comparta datos entre contenedores y máquina host
- Retire un recipiente una vez que se detuvo
Comando de ejecución de Docker
La sintaxis del comando:
docker run [options] image-name [command] [arg...]
Para ejecutar un contenedor de la ventana acoplable, simplemente puede ejecutar el siguiente comando, asumiendo que ya ha instalado la ventana acoplable:
docker run image-name
Dónde:
image-name podría ser una imagen de la ventana acoplable en su máquina local o ser extraída del registro en línea como Docker Hub y Quay.io.
En el siguiente ejemplo, ejecutará un contenedor desde una imagen pública ‘hello-world’ que se encuentra en Docker Hub.
$ sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 0e03bdcc26d7: Pull complete Digest: sha256:7f0a9f93b4aa3022c3a4c147a449bf11e0941a1fd0bf4a8e6c9408b2600777c5 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ...
La primera vez que ejecuta el contenedor, el demonio de Docker extrae la imagen ‘hello-world’ del Docker Hub. Luego, crea un nuevo contenedor a partir de esa imagen y transmite la salida a su terminal. A partir de ahora, la imagen se descargó en su máquina local. Puede enumerar todas las imágenes de la ventana acoplable ejecutando:
$ sudo docker image ls
Producción:
REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 4e2eef94cd6b 9 days ago 73.9MB nginx latest 4bb46517cac3 2 weeks ago 133MB alpine latest a24bb4013296 3 months ago 5.57MB truongnh1992/go latest 57b4af3567ac 3 months ago 7.41MB hello-world latest bf756fb1ae65 7 months ago 13.3kB
La próxima vez que ejecute esa imagen, será más rápida que la primera y podrá usar el ID de la imagen en lugar del nombre de la imagen. Por ejemplo:
$ sudo docker run bf756fb1ae65 Hello from Docker! This message shows that your installation appears to be working correctly. ...
Nota: Desde la versión 1.13 de Docker, debido a la nueva sintaxis de su lanzamiento, usamos ‘docker container run’ en lugar de ‘docker run’.
Se recomienda preceder el comando docker run con sudo o la otra solución sin sudo.
Ejecutar un contenedor con un nombre definido
Cuando ejecuta un contenedor con la sintaxis básica ‘docker container run’, Docker generará aleatoriamente un nombre para cada contenedor, como puede ver a continuación:
$ sudo docker container ls -a
Producción:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 941b67537bbb ubuntu "/bin/bash" 4 seconds ago Exited (0) 3 seconds ago musing_elgamal a7b197b56d2c bf756fb1ae65 "/hello" About a minute ago Exited (0) About a minute ago determined_faraday 0b40e331161e hello-world "/hello" 4 minutes ago Exited (0) 4 minutes ago nervous_sammet
Si desea asignar explícitamente un nombre para su contenedor, ejecutemos el comando con la siguiente sintaxis:
$ docker container run --name container-name image-name
Por ejemplo:
$ sudo docker container run --name hello-linoxide hello-world
Producción:
$ sudo docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES eb2f0c9cc658 hello-world "/hello" 21 seconds ago Exited (0) 20 seconds ago hello-linoxide ...
Ejecutar un contenedor en primer plano
Cuando trabajamos con contenedores docker, hay dos modos de ejecutarlos: modo adjunto y modo separado.
De forma predeterminada, Docker ejecuta el contenedor en primer plano. Significa que el proceso contenedor se adjunta a la sesión de terminal y muestra el resultado. Si el contenedor aún se está ejecutando, no devolverá el símbolo del sistema.
Por ejemplo:
$ sudo docker container run nginx /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Configuration complete; ready for start up
Ejecute un contenedor en el modo separado
Si desea ejecutar ese contenedor en un proceso en segundo plano (modo separado), usemos el -d
opción:
$ sudo docker container run -d nginx 4fd8f2933eafaebcc75ef4fe6d0a961f76d8fdbf64383caff7f422a25c60951f
Ejecutar un contenedor en modo interactivo
Docker admite la ejecución de un contenedor en modo interactivo. Gracias a esta característica, puede ejecutar comandos dentro de un contenedor con un shell.
Utilizando la -it
opción siguiente con ‘/ bin / bash’ o ‘/ bin / sh’ para iniciar el modo interactivo, por ejemplo:
$ sudo docker container run -it ubuntu /bin/bash root@d99e70bff763:/# echo $0 /bin/bash
$ sudo docker container run -it ubuntu /bin/sh # echo $0 /bin/sh
Reenvío de puertos de un contenedor
De forma predeterminada, para acceder al proceso que se ejecuta dentro de un contenedor, debe ingresar a su interior. Si quieres acceder a él desde el exterior, abramos un puerto. Al publicar puertos, puede asignar los puertos del contenedor a los puertos de su máquina host usando -p
opción de la siguiente manera:
$ dock container run -p host-port:container-port image
Por ejemplo, para asignar el puerto 80 del contenedor nginx al puerto 8080 en la máquina host, ejecute:
$ sudo docker container run -d -p 8080:80 nginx cd85a291dab1ff92fa2ee6275446f758baa8322de2b706f7b581a54825142c5b
Ahora, usemos ‘curl’ para recuperar el contenido de localhost: 8080
$ curl localhost:8080
Volúmenes de montaje de un contenedor
Los datos de un contenedor son efímeros, ya no existen cuando se detiene el contenedor. Si desea mantener los datos en el contenedor de manera persistente, debe montarlos en un volumen de almacenamiento compartido.
Usemos -v
opción de la siguiente manera para volúmenes de montaje:
$ docker container run -v host-machine-location:container-storage image
Por ejemplo, montemos el directorio ‘share-data’ en su máquina host en ‘/ home’ en el contenedor:
$ mkdir share-data/ $ echo "Hello linoxide readers" > share-data/test.txt $ sudo docker container run -it -v $(pwd)/share-data:/home alpine
Producción:
/ # ls /home/ test.txt / # cat /home/test.txt Hello linoxide readers
Retire un recipiente una vez que se detuvo
De forma predeterminada, cuando un contenedor se detiene, su sistema de archivos aún permanece en la máquina host. Consumen una gran cantidad de almacenamiento. Si desea eliminar automáticamente el contenedor después de que salga, use --rm
opción:
$ docker container run --rm image
Por ejemplo, ejecutar un contenedor Docker sin --rm
opción:
$ sudo docker container run ubuntu $ sudo docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ad348fb61463 ubuntu "/bin/bash" 8 seconds ago Exited (0) 6 seconds ago distracted_hoover
Cuando usas --rm
opción, una vez detenido el contenedor, se eliminará automáticamente.
$ sudo docker container run --rm ubuntu $ sudo docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Conclusión
Docker es una plataforma de código abierto que permite a los desarrolladores de software crear, implementar y administrar aplicaciones en contenedores. Docker es una herramienta realmente poderosa para cualquier desarrollador, especialmente para los ingenieros de DevOps. Dominar la forma de usar los comandos ‘docker container run’ es la clave para descubrir el poder de Docker.
Gracias por leer y deje su sugerencia en la sección de comentarios a continuación.