Introducción
Docker es una utilidad que te permite crear un contenedor para ejecutar aplicaciones. Un contenedor Docker es una máquina virtual completa.
Esta guía le mostrará tres métodos para SSH en un contenedor Docker y ejecutar comandos.
Requisitos previos
- Un sistema Linux que ejecuta Docker
- Contenedores preconfigurados cargados y funcionando
- Acceso a una ventana de terminal/símbolo del sistema (Ctrl +Alt +T o Ctrl +Alt +
F2 ) - Una cuenta de usuario con sudo privilegios
Método 1:Usar docker exec para ejecutar comandos en un contenedor Docker
El docker exec
comando ejecuta un comando especificado dentro de un contenedor que ya se está ejecutando. Puede usarlo para SSH en un contenedor Docker creando un bash shell (un shell donde puede escribir comandos).
La sintaxis básica para usar docker exec
ejecutar un comando en contenedores es:
docker exec [options] [container] [command]
Comience extrayendo una imagen de Docker si aún no lo ha hecho. Por ejemplo, puede cargar Nginx :
sudo docker pull nginx
Luego, ejecute la imagen:
sudo docker run ––name nginx–test –d nginx
Enumere todos los contenedores en ejecución para verificar:
sudo docker ps
Ahora debería ver su imagen de prueba nginx cargada.
Para obtener acceso y ejecutar comandos en ese contenedor Docker, escriba lo siguiente:
sudo docker exec –it nginx-test /bin/bash
Ahora, ha iniciado sesión en nginx-test envase. Por lo tanto, cualquier comando que ingrese se ejecutará en ese contenedor. El –i
opción especifica interactivo y el –t
habilita un tecleo terminal interfaz.
Método 2:Utilice el comando adjuntar docker para conectarse a un contenedor en ejecución
El docker attach
El comando vincula una entrada local, una salida y un flujo de error a un contenedor. De forma predeterminada, se inicia en un bash cáscara . Para conectarse a un contenedor en ejecución, ingrese lo siguiente:
sudo docker attach container_Name
En el siguiente ejemplo, el sistema se conectará a la prueba de nginx contenedor:
sudo docker attach nginx-test
Una vez que se ejecuta el comando, estará trabajando en el contenedor. Cualquier comando que ejecute afectará el entorno virtual de Docker.
Método 3:usar SSH para conectarse a un contenedor Docker
Puede conectarse a un contenedor Docker mediante SSH (Secure Shell). Normalmente, SSH se usa para conectarse de forma remota a través de una red a un servidor. La tecnología funciona igual cuando se conecta a un contenedor Docker virtual en su sistema.
Paso 1:habilite SSH en el sistema
Comience instalando y habilitando el servicio SSH:
Habilitar SSH en Ubuntu 18.04:
sudo apt-get install ssh
sudo systemctl ssh start
sudo systemctl ssh enable
service ssh status
Habilitar SSH en CentOS 7:
yum –y install openssh-server openssh-clients
service sshd start
service sshd enable
service sshd status
Paso 2:Obtenga la dirección IP del contenedor
Obtenga la dirección IP del contenedor mediante docker inspect
comando y filtrando los resultados.
Para motores Docker modernos, use el comando:
sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" container_name
Para motores Docker más antiguos, ejecute:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
El sistema mostrará la dirección IP como se ve en la imagen de arriba.
Paso 3:SSH en el contenedor Docker
Haga ping a la dirección IP para asegurarse de que esté disponible:
ping –c 3 172.17.0.2
Utilice la herramienta SSH para conectarse a la imagen:
ssh [email protected]
El sistema debe solicitar una contraseña del usuario root para ese contenedor. Si dice Conexión rechazada , es probable que el contenedor no esté aprovisionado para SSH. Si el indicador cambia, ahora está conectado a través de SSH y puede ejecutar comandos en el contenedor.