LINUX

Cómo utilizar el comando Ejecutar de Docker [Beginners Guide]

comando ejecutar docker

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.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar