/ HOWTO

Modos de lanzamiento de Contenedores.

Algunos puntos importantes sobre como usar los modos de funcionamiento de contenedores.


Docker necesita que la imágen que se utilizó para crear un contenedor exista localmente, borrar esa imágen borrará los contenedores que la usan, impediría borrar la imágen dando este error.

# docker rmi ubussh
Error response from daemon: conflict: unable to remove repository reference "ubussh" (must force) - container ce7aea05b590 is using its referenced image e3ea86d084a3

Sin embargo, SI puedo elimiar los contenedores que usen una imágen, debemos pensar en los contenedores como “hijos” (contenedor) asociados a su “padre” (imágen)

Indicando el parámetro “–force” se eliminará la imágen y todos los contenedores que la usen.

# docker rmi ubussh --force

Al arrancar un contenedor tenemos varios parámetros de configuración :

  • -i Mantiene una conexión establecida con el “standard input”
  • -t Gestiona un “pseudo TTY”
  • -d Corre el contenedor en modo “background” imprime el ID.
  • -a Asocia standard input or output a la sesión abierta
  • –cpus Número de CPUs asignadas
  • –ip Asigna un IP
  • –mac-address Asigna un mac address especial al contenedor.
  • -m Fija un límite de memoria para ese contenedor (suelen ser unos pocos megas)
  • –name Asigna un nombre al contenedor
  • -p Publica puertos del contenedor en la red asignada
  • –rm Al parar el contenedor se borrará automáticamente.
  • –tmpfs Monta un directorio en modo tmpfs (temporal que se borrará, no tiene persistencia)
  • -v Monta un directorio en el contenedor con persistencia, puede ser una carpeta del equipo real o un volúmen docker.

El órden de los modificadores es un poco estricto, deben respetar el órden establecido o recibirán un error en el comando.

Este comando NO es válido.

# docker run -it ubuntu:17.10 --name u1 /bin/bash

Y este comando SI es válido.

# docker run --name u1 -it ubuntu:17.10 /bin/bash
root@d4f3a33c3bef:/#

Quizas uno de los métodos mas sencillos, hemos arrancado un contenedor usando la imágen de Ubuntu 17.10, en modo interactivo, con nombre “u1” y ejecutaremos el “bash”, al mismo tiempo nos abre una sesión de bash para interactuar.

El contenedor está en funcionamiento

# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
d4f3a33c3bef        ubuntu:17.10        "/bin/bash"         2 minutes ago       Up 2 minutes

Ahora salgo del contenedor y se apagará.

root@d4f3a33c3bef:/# exit
# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Ahora podemos volver a arrancar ese contenedor, que llamamos “u1”

# docker start u1

Volverá a estar activo y funcionando.

# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
d4f3a33c3bef        ubuntu:17.10        "/bin/bash"         3 minutes ago       Up 2 seconds                            u1

A partir del momento de crearlo, existirá un contenedor llamado “u1” que podremos arrancar cuando necesitemos.


Ahora crearemos un contenedor llamado “u2”, basado en Ubuntu 17.10 y que correrá “bash”. En este caso no tendremos una sesión bash con la que interactuar.

# docker run --name u2 -d ubuntu:17.10 /bin/bash
512ff6cd9227612003d0b50e42ca6e455062853ad1c5948f7dfe44f82e78f79e

Podremos arrancarlo pero se parará automáticamente luego de ejecutar el “bash”. Ese contenedor existirá en nuestro equipo real pero no tiene sentido usarlo. Aún con las opciones -a -i no resuelven como usarlo correctamente.

# docker start u2

Ahora crearemos un contenedor con opciones similares, pero indicando -d y -it.

# docker run --name u3 -d -it ubuntu:17.10 /bin/bash
6320a018107a3b1a6c58e19eb5b6b1c2f09b8ee9edd639493fc56701babdc752

Aunque no tengamos una sesión abierta, quedará corriendo en background y podremos conectarnos a él.

# docker attach u3
root@6320a018107a:/# exit

Ahora al salir con “exit” ese contenedor se detiene, podemos re-arrancarlo con

# docker start u3

Y detenerlo con

# docker stop u3

También tenemos la posibilidad de arrancar un contenedor, usarlo en modo interactivo y al salir del mismo, sea destruido (–rm)

Servirá para ciertas pruebas de funcionamiento y si no queremos mantener contenedores en nuestro equipo real.

# docker run --name u3 --rm -it ubuntu:17.10 /bin/bash
root@d0857ee1ec2f:/#

Al salir del mismo con “exit” se destruirá.


Como sugerencia, revisar las imágenes y contenedores que tenemos en nuestro equipo real para no conservarlas si no las necesitamos.

# docker images

# docker ps -a

Subscríbete y recibirás los últimos artículos semanalmente en tu email.