Instale Docker y aprenda la manipulación básica de contenedores en CentOS y RHEL 8/7 - Parte 1


En esta serie de 4 artículos, analizaremos Docker, que es una herramienta de virtualización liviana de código abierto que se ejecuta en la parte superior del nivel del sistema operativo, lo que permite a los usuarios crear, ejecutar e implementar aplicaciones, encapsuladas en pequeños contenedores.

Se ha demostrado que este tipo de contenedores de Linux son rápidos, portátiles y seguros. Los procesos que se ejecutan en un contenedor Docker siempre están aislados del host principal, lo que evita la manipulación externa.

Este tutorial proporciona un punto de partida sobre cómo instalar Docker, crear y ejecutar contenedores de Docker en CentOS/RHEL 8/7, pero apenas toca la superficie de Docker.

Paso 1: instalar y configurar Docker

1. Las versiones anteriores de Docker se llamaban docker o docker-engine, si las tiene instaladas, debe desinstalarlas antes de instalar una versión más nueva de docker-ce.

# yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2. Para instalar la última versión de Docker Engine, debe configurar el repositorio de Docker e instalar el paquete yum-utils para habilitar el repositorio estable de Docker en el sistema.

# yum install -y yum-utils
# yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3. Ahora instale la versión más reciente de docker-ce desde el repositorio de Docker y containerd manualmente, porque debido a algunos problemas, Red Hat bloqueó la instalación de containerd.io> 1.2.0-3.el7 , que es una dependencia de docker-ce.

# yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
# yum install docker-ce docker-ce-cli

4. Una vez que se haya instalado el paquete Docker, inicie el demonio, verifique su estado y habilítelo en todo el sistema con los siguientes comandos:

# systemctl start docker 
# systemctl status docker
# systemctl enable docker

5. Finalmente, ejecute una imagen de prueba de contenedor para verificar si Docker funciona correctamente, emitiendo el siguiente comando:

# docker run hello-world

Si puede ver el siguiente mensaje, entonces todo está en el lugar correcto.

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

6. Ahora, puede ejecutar algunos comandos básicos de Docker para obtener información sobre Docker:

# docker info
# docker version

7. Para obtener una lista de todos los comandos de Docker disponibles, escriba docker en su consola.

# docker

Paso 2: descargue una imagen de Docker

8. Para iniciar y ejecutar un contenedor Docker, primero se debe descargar una imagen de Docker Hub en su host. Docker Hub ofrece muchas imágenes gratuitas de sus repositorios.

Para buscar una imagen de Docker, Ubuntu, por ejemplo, emita el siguiente comando:

# docker search ubuntu

9. Una vez que haya decidido qué imagen desea ejecutar en función de sus necesidades, descárguela localmente ejecutando el siguiente comando (en este caso, se descarga y usa una imagen de Ubuntu):

# docker pull ubuntu

10. Para enumerar todas las imágenes de Docker disponibles en su host, emita el siguiente comando:

# docker images

11. Si ya no necesita una imagen de Docker y desea eliminarla del host, ejecute el siguiente comando:

# docker rmi ubuntu

Paso 3: ejecutar un contenedor de Docker

Cuando ejecutas un comando contra una imagen, básicamente obtienes un contenedor. Una vez que finaliza el comando que se está ejecutando en el contenedor, el contenedor se detiene (obtiene un contenedor que no se está ejecutando o ha salido). Si ejecuta otro comando en la misma imagen nuevamente, se crea un nuevo contenedor y así sucesivamente.

Todos los contenedores creados permanecerán en el sistema de archivos del host hasta que elija eliminarlos usando el comando docker rm .

12. Para crear y ejecutar un contenedor, debe ejecutar el comando en una imagen descargada, en este caso, Ubuntu, por lo que un comando básico sería mostrar el archivo de versión de distribución dentro del contenedor usando el comando cat, como se muestra a continuación. ejemplo:

# docker run ubuntu cat /etc/issue

El comando anterior se divide de la siguiente manera:

# docker run [local image] [command to run into container]

13. Para ejecutar uno de los contenedores nuevamente con el comando que se ejecutó para crearlo, primero debe obtener el ID del contenedor (o el nombre generado automáticamente por Docker) emitiendo el siguiente comando, que muestra una lista de los contenedores detenidos (no en ejecución):

# docker ps -l 

14. Una vez que se ha obtenido el ID del contenedor, puede iniciar el contenedor nuevamente con el comando que se usó para crearlo, emitiendo el siguiente comando:

# docker start 923a720da57f

Aquí, la cadena 923a720da57f representa el ID del contenedor.

15. En caso de que el contenedor esté en estado de ejecución, puede obtener su ID emitiendo el comando docker ps . Para detener el contenedor en ejecución, emita el comando docker stop especificando el ID del contenedor o el nombre generado automáticamente.

# docker stop 923a720da57f
OR
# docker stop cool_lalande
# docker ps

16. Una alternativa más elegante para que no tenga que recordar el ID del contenedor sería asignar un nombre único para cada contenedor que cree usando la opción --name en la línea de comando, como en el siguiente ejemplo:

# docker run --name ubuntu20.04 ubuntu cat /etc/issue

17. Luego, usando el nombre que asignó para el contenedor, puede manipular el contenedor (iniciar, detener, eliminar, arriba, estadísticas) aún más con solo indicar su nombre, como en los siguientes ejemplos:

# docker start ubuntu20.04
# docker stats ubuntu20.04
# docker top ubuntu20.04 

Tenga en cuenta que algunos de los comandos anteriores pueden no mostrar ningún resultado si finaliza el proceso de comando que se utilizó para crear el contenedor. Cuando finaliza el proceso que se ejecuta dentro del contenedor, el contenedor se detiene.

Paso 4: ejecutar una sesión interactiva en un contenedor

18. Para conectarse de forma interactiva a una sesión de shell de contenedor y ejecutar comandos como lo hace en cualquier otra sesión de Linux, ejecute el siguiente comando:

# docker run -it ubuntu bash

El comando anterior se divide de la siguiente manera:

  1. -i se utiliza para iniciar una sesión interactiva.
  2. -t asigna un TTY y adjunta stdin y stdout.
  3. ubuntu es la imagen que usamos para crear el contenedor.
  4. bash (o/bin/bash) es el comando que estamos ejecutando dentro del contenedor de Ubuntu.

19. Para salir y volver al host desde la sesión del contenedor en ejecución, debe escribir el comando exit . El comando de salida finaliza todos los procesos del contenedor y los detiene.

# exit

20. Si ha iniciado sesión de forma interactiva en el indicador de la terminal del contenedor y necesita mantener el contenedor en estado de ejecución pero salir de la sesión interactiva, puede salir de la consola y volver al terminal host presionando Ctrl + p y las teclas Ctrl + q .

21. Para volver a conectarse al contenedor en ejecución, necesita el ID o el nombre del contenedor. Emita el comando docker ps para obtener el ID o el nombre y, luego, ejecute el comando docker attach especificando el ID o el nombre del contenedor, como se ilustra en la imagen de arriba:

# docker attach <container id>

22. Para detener un contenedor en ejecución desde la sesión de host, emita el siguiente comando:

# docker kill <container id>

Eso es todo por la manipulación básica de contenedores. En el siguiente tutorial, analizaremos cómo guardar, eliminar y ejecutar un servidor web en un contenedor Docker.