959 votos

Cómo conseguir bash o ssh en un contenedor operativo en modo de fondo?

Quiero ssh o bash a correr ventana acoplable contenedor. Por favor, consulte el ejemplo:

$ sudo docker run -d webserver
webserver is clean image from ubuntu:14.04
$ sudo docker ps
CONTAINER ID  IMAGE            COMMAND    CREATED STATUS  PORTS          NAMES
665b4a1e17b6  webserver:latest /bin/bash  ...     ...     22/tcp, 80/tcp loving_heisenberg 

ahora quiero conseguir algo como esto (ir en la ejecución de contenedor):

$ sudo docker run -t -i webserver (or maybe 665b4a1e17b6 instead)
$ root@665b4a1e17b6:/# 
However when I run the line above I get new CONTAINER ID
$ root@42f1e37bd0e5:/#

He utilizado Vagrant y me gustaría conseguir un comportamiento similar como vagrant ssh.

1341voto

T4NK3R Puntos 962

La respuesta es la ventana acoplable attach comando. Así que para mi ejemplo anterior, la solución:

$ sudo docker attach 665b4a1e17b6 #by ID
or
$ sudo docker attach loving_heisenberg #by Name
$ root@665b4a1e17b6:/# 

ACTUALIZACIÓN: (ventana acoplable >= 1.3) Gracias a WiR3D usuario que sugiere otra forma de obtener el recipiente de la cáscara. Si utilizamos attach podemos usar sólo una instancia de la concha. Así que si queremos abrir una nueva terminal con la nueva instancia de contenedor de la cáscara, sólo debemos ejecutar el siguiente:

$ sudo docker exec -i -t 665b4a1e17b6 bash #by ID
or
$ sudo docker exec -i -t loving_heisenberg bash #by Name
$ root@665b4a1e17b6:/#

701voto

WiR3D Puntos 951

Desde la ventana acoplable 1.3 en adelante.

sudo docker exec -it <containerIdOrName> bash

Básicamente, si la ventana acoplable contenedor se comenzó a usar /bin/bash comando puede acceder usando attach, si no, entonces usted necesita para ejecutar el comando para crear una instancia de bash en el interior del contenedor usando exec

También para salir de bash sin salir de bash ejecuta en un proceso rogue

exit

Jip así de simple.

Nota: usted debe tratar de no ejecutar comandos como sudo, en lugar de agregar el usuario a la docker grupo y sólo se ejecuta normalmente.

130voto

Adam Kalnas Puntos 341

Aunque el autor de la pregunta, dijo que está interesado en un contenedor, también vale la pena señalar que si el contenedor no se está ejecutando, pero que le gustaría correr a hurgar puede ejecutar:

docker run -i -t --entrypoint /bin/bash <imageID>

29voto

kraxor Puntos 2939

Intente esto:

sudo docker run -i -t webserver /bin/bash

Fuente: https://docs.docker.com/articles/basics/#running-an-interactive-shell

4voto

remyseroos Puntos 427

Me gustaría añadir que también se puede dar el Contenedor Docker un routeable dirección IP con Tuberías, y después de que SSH en la máquina con la nueva IP.

Esto será más "tradicional" (ssh), en lugar de utilizar una aplicación específica de comandos como docker attach, y llegará a hacer más 'portátil' a través de sistemas y versiones.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X