Hoy vamos a ver como conectarnos a un contenedor con Docker exec, aunque en realidad no es conectarnos a un contenedor en sí, si no abrir una shell bash interactiva en el contenedor.
Pero bueno, es una forma de acceder a un contenedor en ejecución para instalar, ejecutar o lo que sea que tengamos que hacer.
Para empezar a jugar, iniciaremos uno de nuestros contenedores ya creados con el comando docker start NakivoDirector
1 2 3 4 5 6 7 8 |
gorka@gorka-Docker:~$ docker start NakivoDirector NakivoDirector gorka@gorka-Docker:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7fc4e58f225f ubuntu "bash" 4 weeks ago Up 5 seconds NakivoDirector 62ea111a1323 ubuntu "bash" 5 weeks ago Exited (0) 5 weeks ago gorkubuntu f59c5d6b5e66 ubuntu "bash" 5 weeks ago Exited (137) 5 weeks ago myubuntu gorka@gorka-Docker:~$ |
Una vez iniciado, abriremos una sesión de la shell bash del contenedor con docker exec -it Nombrecontenedor /bin/bash , una vez abierta la sesión, podremos trabajar con el contenedor.
1 2 3 |
gorka@gorka-Docker:~$ docker exec -it NakivoDirector /bin/bash root@7fc4e58f225f:/# root@7fc4e58f225f:/# |
Podemos indicarle con la opción -w, el directorio de trabajo del contendor.
1 2 |
gorka@gorka-Docker:~$ docker exec -it -w /home NakivoDirector /bin/bash root@7fc4e58f225f:/home# |
Con la opción -d le diremos que copie un fichero en el background
1 2 |
gorka@gorka-Docker:~$ docker exec -d NakivoDirector cp /home/file.txt /home/file2.txt gorka@gorka-Docker:~$ |
También podremos listar y comprobar sin acceder al contenedor que ha copiado el fichero.
1 2 3 4 5 6 7 |
gorka@gorka-Docker:~$ docker exec NakivoDirector ls -la /home total 8 drwxr-xr-x 1 root root 4096 Jun 21 18:00 . drwxr-xr-x 1 root root 4096 May 18 19:28 .. -rw-r--r-- 1 root root 0 Jun 21 17:59 file.txt -rw-r--r-- 1 root root 0 Jun 21 18:00 file2.txt gorka@gorka-Docker:~$ |
Si no nos fiamos, podemos iniciar una sesión bash para comprobar los ficheros copiados.
1 2 3 4 5 6 7 8 9 10 |
gorka@gorka-Docker:/$ docker exec -it NakivoDirector bash root@7fc4e58f225f:/# root@7fc4e58f225f:/# root@7fc4e58f225f:/# ls -la /home/ total 8 drwxr-xr-x 1 root root 4096 Jun 21 18:00 . drwxr-xr-x 1 root root 4096 May 18 19:28 .. -rw-r--r-- 1 root root 0 Jun 21 17:59 file.txt -rw-r--r-- 1 root root 0 Jun 21 18:04 file2.txt root@7fc4e58f225f:/# |
Aquí os dejo este otro post de como copiar ficheros de un host a un contenedor.
Y mas información de este comando en la pagina oficinal
https://docs.docker.com/engine/reference/commandline/exec/
Saludos y espero que os guste.