Link Search Menu Expand Document

Ejecutando un contenedor interactivo

En este caso usamos la opción -i para abrir una sesión interactiva, -t nos permite crear un pseudo-terminal que nos va a permitir interaccionar con el contenedor, indicamos un nombre del contenedor con la opción --name, y la imagen que vamos a utilizar para crearlo, en este caso ubuntu, y por último el comando que vamos a ejecutar, en este caso bash, que lanzará una sesión bash en el contenedor:

$  docker run -it --name contenedor1 ubuntu bash 
root@2bfa404bace0:/#

El contenedor se para cuando salimos de él. Para volver a conectarnos a él:

$ docker start contenedor1
contenedor1
$ docker attach contenedor1
root@2bfa404bace0:/#

Si el contenedor se está ejecutando podemos ejecutar comandos en él con el subcomando exec:

$ docker start contenedor1
contenedor1
$ docker exec contenedor1 ls -al

Con la orden docker restart reiniciamos el contenedor, lo paramos y lo iniciamos.

Para mostrar información de un contenedor ejecutamos docker inspect:

$ docker inspect contenedor1 
[
    {
        "Id": "178871769ac2fcbc1c73ce378066af01436b52a15894685b7321088468a25db7",
        "Created": "2021-01-28T19:12:21.764255155Z",
        "Path": "bash",
        "Args": [],
        "State": {
            "Status": "exited",
            "Running": false,
            "Paused": false,
            ...

Nos muestra mucha información, está en formato JSON (JavaScript Object Notation) y nos da datos sobre aspectos como:

  • El id del contenedor.
  • Los puertos abiertos y sus redirecciones
  • Los bind mounts y volúmenes usados.
  • El tamaño del contenedor
  • La configuración de red del contenedor.
  • El ENTRYPOINT que es lo que se ejecuta al hacer docker run.
  • El valor de las variables de entorno.
  • Y muchas más cosas….

En realidad, todas las imágenes tienen definidas un proceso que se ejecuta, en concreto la imagen ubuntu tiene definida por defecto el proceso bash, por lo que podríamos haber ejecutado:

$ docker run -it --name contenedor1 ubuntu