En esta serie de 4 artículos, hablaremos de Docker, que es una herramienta de virtualización ligera 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 contenedores pequeños.
Este tipo de contenedores Linux han demostrado ser 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 manipulaciones externas.
Este tutorial proporciona un punto de partida sobre cómo instalar Docker, crear y ejecutar contenedores Docker en CentOS/RHEL 8/7, pero apenas rasca la superficie de Docker.
Paso 1: Instale y configure 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 reciente 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 del motor de Docker, 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 el contenedor 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. Después de instalar el paquete Docker, inicie el demonio, compruebe 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.
Salida de muestra
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 bashShare 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:
For system-wide information on Docker
# docker info
For Docker version
# docker version
7. To get a list of all available Docker commands type docker on your console.
# docker
Paso 2: Descargue una imagen de Docker
8. Para iniciar y ejecutar un contenedor de Docker, primero debe descargarse una imagen desde Docker Hub en su host. Docker Hub ofrece una gran cantidad de imágenes gratuitas de sus repositorios.
Para buscar una imagen de Docker, Ubuntu, por ejemplo, ejecute el siguiente comando:
# docker search ubuntu
9. Después de decidir 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 listar todas las imágenes de Docker disponibles en su host, ejecute 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 Acoplable
Cuando ejecuta un comando contra una imagen, básicamente obtiene un contenedor. Una vez que finaliza el comando que se ejecuta en el contenedor, el contenedor se detiene (se obtiene un contenedor que no se ejecuta o que sale). Si ejecuta otro comando en la misma imagen de nuevo, se crea un contenedor nuevo, etc.
Todos los contenedores creados permanecerán en el sistema de archivos host hasta que elija eliminarlos utilizando 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 utilizando el comando cat, como en el siguiente ejemplo:
# docker run ubuntu cat /etc/issue
El comando anterior se divide de la siguiente manera:
# docker run
13. Para volver a ejecutar uno de los contenedores 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 en ejecución y detenidos (no en ejecución):
# docker ps -l
14. Una vez obtenido el ID del contenedor, puede iniciar el contenedor de nuevo con el comando que se utilizó 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 problema del contenedor en ejecución docker stop
, especifique el ID del contenedor o el nombre generado automáticamente.
# docker stop 923a720da57fOR# 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 a cada contenedor que cree utilizando la opción --name
en la línea de comandos, 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) simplemente dirigiéndose a 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 salida si finaliza el proceso de comando que se usó para crear el contenedor. Cuando finaliza el proceso que se ejecuta dentro del contenedor, el contenedor se detiene.
Paso 4: Ejecute una sesión interactiva en un Contenedor
18. Para conectarse interactivamente a una sesión de shell de contenedor y ejecutar comandos como 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:
-
-i
se utiliza para iniciar una sesión interactiva. -
-t
asigna un TTY y une stdin y stdout. -
ubuntu
es la imagen que hemos utilizado para crear el contenedor. -
bash
(o /bin/bash) es el comando que estamos ejecutando dentro del contenedor Ubuntu.
19. Para salir y volver al host desde la sesión contenedor en ejecución, debe escribir el comando exit
. El comando exit finaliza todos los procesos del contenedor y los detiene.
# exit
20. Si ha iniciado sesión interactiva en el indicador de terminal de 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 pulsando las teclas Ctrl+p
y Ctrl+q
.
21. Para volver a conectarse al contenedor en ejecución, necesita el ID o nombre del contenedor. Ejecute el comando docker ps
para obtener el ID o el nombre y, a continuación, ejecute el comando docker attach
especificando el ID o el nombre del contenedor, como se ilustra en la imagen anterior:
# docker attach <container id>
22. Para detener un contenedor en ejecución desde la sesión de host, ejecute el siguiente comando:
# docker kill <container id>
Eso es todo para la manipulación básica de contenedores. En el siguiente tutorial, explicaremos cómo guardar, eliminar y ejecutar un servidor web en un contenedor acoplable.