Docker facilita el manejo de contenedores. Los contenedores en Linux permiten que las aplicaciones se ejecuten independiente del sistema donde están alojados. Un desarrollador puede empaquetar una aplicación junto con las dependencias y librerías. Esto permite simplicar la configuración y la depuración de código tanto en producción como en desarrollo.

Estas son las instrucciones para instalar docker en un servidor centOS del tipo Digital Ocean o Linode. Para instalar docker en CentOS primero revisamos que no haya versiones previas de Docker:

  sudo yum remove -y docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

Luego se instalan las herramientas necesarias para comenzar con Docker:

  sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

A continuación se agrega el código estable:

  sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

Ahora se puede instalar docker:

  sudo yum -y install docker-ce

En este momento se puede iniciar y activar docker:

  sudo systemctl start docker && sudo systemctl enable docker

Podemos comprobar que docker está instalado descargando y ejecutando hello-world:

  sudo docker run hello-world

Para que un usuario diferente de root pueda ejecutar docker hay que agregarlo al grupo:

  sudo usermod -aG docker usuario

Para que el cambio se haga efectivo el usuario debe salir e ingresar de nuevo al servidor.

Comandos básicos

Mostrar las imágenes instaladas:

  docker image ls

Traer la imagen de nginx de Docker Hub:

  docker image pull nginx

Ver detalles de la imagen:

  docker image inspect nginx

Ver los contenedores instalados:

  docker container ls

Ejecutar el contenedor nginx:

  docker container run nginx

Ver los contenedores en ejecución:

  docker container ps

Generar imagen con contenido html estático con nginx ejecutándose en segundo plano:

  docker run --name mynginx -p 80:80 -d -v ~/docker-nginx/html:/usr/share/nginx/html nginx

Ejecutar comandos de forma interactiva usando el bash del contenedor. Entramos en el prompt del contenedor:

  docker container exec -it 74124f68c770 /bin/bash
  root@74124f68c770:/#
  root@74124f68c770:/# ls
  root@74124f68c770:/# exit

Pausar el contenedor:

  docker container pause 74124f68c770

Borrar un contenedor que está en ejecución:

  docker container rm -f 74124f68c770

Borrar todos los contenedores que no están en ejecución:

  docker container prune