Androide

Cómo conectarse a un contenedor acoplable

Entrar a un contenedor Docker ?

Entrar a un contenedor Docker ?

Tabla de contenido:

Anonim

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.

estibador