Entrar a un contenedor Docker ?
Tabla de contenido:
Conectarse a un contenedor Docker en ejecución es útil cuando desea ver lo que sucede dentro del contenedor. Si el contenedor Docker no funciona como se esperaba, puede adjuntarlo al contenedor u obtener un shell para el contenedor y ejecutar comandos como
ps
o
top
. También puede ingresar al contenedor, instalar nuevos paquetes y crear una nueva imagen de Docker a partir de él.
En este tutorial, explicaremos cómo adjuntar al proceso de ejecución principal del contenedor y cómo llevar un shell a un contenedor en ejecución.
Adjuntar a un contenedor
Aunque es posible ejecutar múltiples procesos en un contenedor, la mayoría de los contenedores Docker ejecutan un solo proceso. El comando que se ejecuta al iniciar un contenedor se especifica utilizando la
ENTRYPOINT
y / o
RUN
.
El comando
docker attach
permite conectar su terminal al contenedor en ejecución. Esto es útil cuando desea ver lo que está escrito en la salida estándar en tiempo real, o para controlar el proceso de forma interactiva.
Para comprender mejor cómo funciona el comando
attach
, ejecutemos un nuevo contenedor Nginx separado utilizando la imagen oficial de Nginx.
docker container run --name my_nginx -d -p 8080:80 nginx
La opción
-p 8080:80
le dice a Docker que enlace el puerto 8080 del contenedor al puerto 80 en la máquina host.
Enumere los contenedores para asegurarse de que el contenedor "my_nginx" se esté ejecutando:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e1c4974a8d8 nginx "nginx -g 'daemon of…" 3 minutes ago Up 2 seconds 0.0.0.0:8080->80/tcp my_nginx
Adjunte al contenedor utilizando la ID o el nombre del contenedor:
docker container attach my_nginx
El comando predeterminado de la imagen nginx que se ejecuta cuando ejecuta el contenedor está configurado en
CMD
. Cuando ejecuta el comando de conexión, su terminal se conecta al proceso
nginx
.
Abra
127.0.0.1:8080
en su navegador y podrá ver la salida del proceso nginx en tiempo real.
192.168.33.1 - - "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-" 192.168.33.1 - - "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.33.71:8080/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-"
Para obtener acceso a los registros del contenedor, debe preferir usar el comando
docker logs
.
Para desconectarse del contenedor sin detenerlo, use la combinación de
CTRL-q
CTRL-p
CTRL-q
. Al presionar
CTRL-c
detiene el contenedor.
Si los procesos en ejecución que está adjuntando aceptan entradas, puede enviarle instrucciones.
Lleve una cáscara a un contenedor
El comando
docker exec
permite ejecutar comandos dentro de un contenedor en ejecución.
Para ver cómo funciona el comando
exec
y cómo se puede usar para ingresar al shell del contenedor, primero, inicie un nuevo contenedor. Utilizaremos la imagen oficial de MySQL:
docker container run --name my_mysql -d mysql
Esto creará un contenedor llamado "my_mysql".
Para ejecutar un comando dentro del contenedor, ejecute el siguiente comando:
docker container exec -it my_mysql ls /var
La opción
-i
significa interactivo y
-t
le dice a Docker que asigne un dispositivo pseudo TTY. El comando
ls
enumerará todos los archivos y directorios dentro del directorio
/var
del contenedor:
backups cache lib local lock log mail opt run spool tmp
Para obtener un shell en el contenedor, es decir, para ingresar dentro del contenedor, inicie una nueva sesión de shell ejecutando el binario de shell. Puede usar
sh
,
bash
o cualquier otro shell que esté incluido en la imagen.
El siguiente comando creará una nueva sesión de Bash dentro del contenedor:
docker container exec -it my_mysql /bin/bash
Su símbolo del sistema cambiará, lo que indica que ahora está trabajando en el shell del contenedor.
Desde aquí, puede ejecutar comandos de la misma manera que lo haría en cualquier otro servidor Linux. Por ejemplo, para obtener una lista de las variables de entorno actuales, escriba
env
:
env
La salida se verá más o menos así:
HOSTNAME=e0214d97e0fe MYSQL_ROOT_PASSWORD=my-secret-pw PWD=/ HOME=/root MYSQL_MAJOR=8.0 GOSU_VERSION=1.7 MYSQL_VERSION=8.0.17-1debian9 TERM=xterm SHLVL=1 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin _=/usr/bin/env
Conclusión
Los comandos
docker exec
y
docker attach
permiten conectarse a un contenedor en ejecución. Para obtener un shell interactivo en un contenedor, use el comando
exec
para iniciar una nueva sesión de shell. El comando de conexión conecta su terminal a un contenedor en ejecución.
Error al enumerar objetos en el contenedor
Si no puede cambiar los permisos de los objetos y recibe Error al enumerar objetos en el contenedor , Error de acceso denegado en Windows 10 / 8.1, consulte esta solución.
Cómo encontrar y conectarse a redes WiFi ocultas en Windows 10
¿Qué es una red WiFi oculta o un SSID oculto? ¿Cómo encontrar y conectarse a redes WiFi ocultas en Windows 10? ¿Cómo hacer que su red inalámbrica esté oculta? Esta publicación responde a todas estas preguntas.
Cómo enumerar contenedores en la ventana acoplable
Docker es una plataforma de contenedorización que le permite construir, probar e implementar rápidamente aplicaciones como contenedores portátiles y autosuficientes que pueden ejecutarse prácticamente en cualquier lugar. En este artículo, explicaremos cómo enumerar los contenedores Docker.