Introducción
Docker es a plataforma que facilita la ejecución y gestión de procesos de aplicaciones en contenedores. Proporciona una forma de separar sus aplicaciones de su infraestructura. Los contenedores son muy similares a las máquinas virtuales, pero son más portátiles, eficientes y fáciles de usar. Existen varias formas de instalar Docker en Linux distribuciones. La forma más popular y sencilla de instalar Docker en el sistema operativo existente es mediante el uso de comandos yum.
Este tutorial demostrará cómo puede configurar y utilizar Docker en CentOS 7 en unos pocos pasos sencillos.
Requisitos previos:
- 64 bits Instancia de CentOS 7.
- Un usuario no root con privilegios sudo.
Todos los comandos que ejecute a lo largo de este tutorial se ejecutan como un usuario no root y, si es necesario, se proporcionará acceso root utilizando la palabra clave sudo.
Paso 1: Configuración de Docker en una instancia de CentOS 7
Es posible que el repositorio oficial de CentOS 7 no tenga el último paquete de instalación para Docker. En esta sección, instalará la última versión de Docker desde el repositorio oficial de Docker. Primero, debe actualizar la base de datos de paquetes usando:
|
1 |
sudo yum check-update |
Una vez completado el paso de actualización, ejecute el siguiente comando para descargar e instalar la última versión de Docker:
|
1 |
curl -fsSL https://get.docker.com/ | sh |
Docker ya está instalado, por lo que puede iniciar el demonio de Docker ejecutando el siguiente comando:
|
1 |
sudo systemctl start docker |
Para verificar si el demonio de Docker se está ejecutando, escriba lo siguiente:
|
1 |
sudo systemctl status docker |
La salida del comando systemctl status debe ser similar a la salida compartida a continuación, que muestra que se está ejecutando:
|
1 2 3 4 5 6 |
Salida: ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2021-02-17 18:22:06 UTC; 10s ago Docs: https://docs.docker.com Main PID: 21884 (dockerd) |
Finalmente, para asegurarse de que Docker se inicie al reiniciar la máquina, use el comando:
|
1 |
sudo systemctl enable docker |
La instalación de Docker le proporciona el servicio Docker, así como la utilidad de cliente (cliente de línea de comandos de Docker). En las siguientes secciones del tutorial, podrá practicar más utilizando los comandos de Docker.
También puede echar un vistazo a nuestro tutorial detallado sobre cómo instalar & operar Docker en Ubuntu en la nube pública.
Paso 2: Uso de comandos de Docker sin el prefijo Sudo
Los comandos de Docker necesitan privilegios de root para ejecutarse. Por lo tanto, si desea ejecutar los comandos, tendrá que anteponerles sudo. Durante la instalación, se crea un grupo Docker de forma predeterminada. Si agrega un usuario al grupo, puede ejecutar los comandos de Docker sin sudo. Intentar ejecutar comandos de Docker sin sudo o agregar al usuario al grupo dará como resultado una salida similar a la siguiente:
|
1 2 3 |
Salida: docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'. |
Agregar su nombre de usuario al grupo Docker garantizará que no tenga que usar sudo para ejecutar los comandos de Docker:
|
1 |
sudo usermod -aG docker $(whoami) |
Para agregar otro usuario al grupo Docker, simplemente puede reemplazar el nombre de usuario en el comando:
|
1 |
sudo usermod -aG docker username |
Durante el resto de esta guía, asumiremos que todos los comandos son ejecutados por un usuario en el grupo de usuarios de Docker. Si este no es el caso, puede usar el prefijo sudo con los comandos.
Paso 3: Ejecutar los comandos de Docker
Ahora que tienes Docker instalado y en funcionamiento, veamos algunos comandos para familiarizarte con la utilidad de línea de comandos de Docker. Los comandos de Docker suelen tener la siguiente forma:
|
1 |
docker [opción] [comando] [argumentos] |
Para encontrar todos los subcomandos disponibles debes usar:
|
1 |
docker |
A partir de Docker 20.10.3, la lista completa de subcomandos disponibles incluye:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Salida: attach Acoplar los flujos estándar de entrada, , salida , y error locales a un contenedor en ejecución build Construir una imagen a partir de un Dockerfile commit Crear una nueva imagen a partir de los cambios de un contenedor cp Copiar archivos/carpetas entre un contenedor y el sistema de archivos local create Crear un nuevo contenedor diff Inspeccionar cambios en archivos o directorios en el sistema de archivos de un contenedor events Obtener eventos en tiempo real desde el servidor exec Ejecutar un comando en un contenedor en ejecución export Exportar el sistema de archivos' de un contenedor como un archivo tar history Mostrar el historial de una imagen images Listar imágenes import Importar el contenido de un archivo tar para crear una imagen de sistema de archivos info Mostrar información- de todo el sistema inspect Devolver información- de bajo nivel sobre objetos de Docker kill Matar uno o más contenedores en ejecución load Cargar una imagen desde un archivo tar o STDIN login Iniciar sesión en un registro de Docker logout Cerrar sesión en un registro de Docker logs Obtener los registros de un contenedor pause Pausar todos los procesos dentro de uno o más contenedores port Listar los mapeos de puertos o un mapeo específico para el contenedor ps Listar contenedores pull Descargar una imagen o un repositorio desde un registro push Subir una imagen o un repositorio a un registro rename Renombrar un contenedor restart Reiniciar uno o más contenedores rm Eliminar uno o más contenedores rmi Eliminar una o más imágenes run Ejecutar un comando en un nuevo contenedor save Guardar una o más imágenes en un archivo tar (transmitido a STDOUT por defecto) search Buscar en el Docker Hub por imágenes start Iniciar uno o más contenedores detenidos stats Mostrar un flujo en vivo de estadísticas (de ) uso de recursos del contenedor stop Detener uno o más contenedores en ejecución tag Crear una etiqueta IMAGEN_OBJETIVO que haga referencia a IMAGEN_ORIGEN top Mostrar los procesos en ejecución de un contenedor unpause Reanudar todos los procesos dentro de uno o más contenedores update Actualizar la configuración de uno o más contenedores version Mostrar la información de versión de Docker wait Bloquear hasta que uno o más contenedores se detengan, , luego imprimir sus códigos de salida |
Puedes usar la opción –help con un comando específico para obtener más información sobre él:
|
1 |
docker subcommand --help |
Para obtener información detallada sobre el sistema, usa:
|
1 |
docker info |
Paso 4: Trabajar con imágenes de Docker
Las imágenes de Docker se pueden considerar el plano para los contenedores de Docker. Estas imágenes generalmente se descargan de Docker Hub, que es un registro gestionado por el proyecto Docker. Cualquiera puede crear y subir sus imágenes a Docker Hub. Como resultado, puedes encontrar fácilmente una amplia variedad de aplicaciones y distribuciones de sistemas operativos en el registro. Probemos un programa simple que confirmará el acceso a Docker Hub:
|
1 |
docker run hello-world |
Deberías obtener una salida como la siguiente, que muestra que Docker está funcionando:
|
1 2 3 4 |
Salida: ¡Hola desde Docker! Este mensaje muestra que tu instalación parece estar be funcionando correctamente. ... |
Puedes encontrar varias imágenes de Docker en Docker Hub utilizando el comando de búsqueda. Por ejemplo, mira el siguiente comando para buscar una imagen de CentOS:
|
1 |
docker search centos |
La consulta de búsqueda mostrará una lista de todas las imágenes que coincidan con la subcadena. En tu caso, la salida debería ser como:
|
1 2 3 4 5 6 7 8 |
Salida: NOMBRE DESCRIPCIÓN ESTRELLAS OFICIAL AUTOMATIZADO centos La compilación oficial de CentOS. 6410 [OK] ansible/centos7-ansible Ansible en Centos7 132 [OK] consol/centos-xfce-vnc Centos contenedor con "headless" VNC sess… 125 [OK] jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repos… 117 [OK] centos/systemd systemd habilitado base contenedor. 96 [OK] ... |
En los resultados de la búsqueda, hay diferentes columnas que describen información sobre la imagen. El OK en la columna OFFICIAL determina que la imagen fue creada y es respaldada por la empresa detrás de la aplicación. Una vez que haya finalizado la imagen, puede descargarla en su máquina local utilizando el comando Docker pull:
|
1 |
docker pull centos |
Después de descargar la imagen, puede ejecutar el contenedor utilizando el comando Docker run. Si intenta ejecutar directamente una imagen sin descargarla previamente, Docker descargará la imagen y luego ejecutará el contenedor:
|
1 |
docker run centos |
Puede listar las imágenes descargadas en su máquina local utilizando el siguiente comando:
|
1 |
docker images |
Debería obtener una salida similar:
|
1 2 3 4 |
Salida: REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 300e315adb2f 2 meses atrás 209MB hello-world latest bf756fb1ae65 13 meses atrás 13.3kB |
Más adelante en este tutorial, podrá modificar las imágenes para ejecutar los contenedores. Estas nuevas imágenes se pueden agregar o subir a Docker Hub y a otros registros que alojan imágenes de Docker.
Paso 5: Ejecutar un contenedor de forma interactiva
Hay diferentes tipos de contenedores. El contenedor hello-world que ejecutó en el Paso 4 es un tipo de contenedor que se ejecuta y finaliza después de imprimir un mensaje. Otro tipo de contenedor es el interactivo. Puede utilizar contenedores interactivos de manera similar a una máquina virtual.
Creemos un contenedor a partir de la última imagen de CentOS. El uso de las banderas -i y -t en el comando Docker run le dará acceso interactivo al contenedor CentOS:
|
1 |
docker run -it centos |
El símbolo del sistema cambiará y debería verse como la siguiente salida:
|
1 2 |
Salida: [root@3ce69d2a35b9 /]# |
|
1 |
Nota: El id del contenedor mostrado en el símbolo del sistema es único y le será de utilidad más adelante, , en el ejemplo es el 3ce69d2a35b9. |
Ahora cualquier comando que ejecute se ejecutará dentro del contenedor. Eso es similar a ejecutar un comando en una máquina virtual. Intentemos instalar MySQL como servidor en el contenedor CentOS. Puede hacerlo usando:
|
1 |
yum install mysql |
Paso 6: Confirmar los cambios en un contenedor en una imagen de Docker
Después de iniciar el contenedor, puede realizar todas las operaciones que se pueden hacer en una máquina virtual similar, como crear/modificar archivos o configurar una aplicación. Tenga en cuenta que estos cambios solo permanecerán en ese contenedor, y después de destruir el contenedor, los cambios que haya realizado se perderán.
En esta parte del tutorial, aprenderá cómo crear una nueva imagen de Docker a partir de un contenedor con los cambios que ha realizado. Después del Paso 5 tendrá un contenedor CentOS ejecutándose con el servidor MySQL instalado. Este contenedor ahora es diferente de la imagen básica de CentOS. Puede guardar este estado del contenedor para un uso posterior. Primero, debe salir del contenedor usando:
|
1 |
exit |
Confirme los cambios que ha realizado en el contenedor en una nueva imagen de Docker utilizando el siguiente comando:
|
1 |
docker commit -m "Cambios realizados en la imagen" -a "Nombre del autor" contenedor-id repositorio/nombre_nueva_imagen |
En el comando, -m se refiere al mensaje de confirmación y básicamente debe denotar los cambios realizados, la etiqueta -a se utiliza para mencionar al autor. El id del contenedor es el del Paso 5, que obtuvo después de ejecutar el contenedor en modo interactivo, y por lo general, el repositorio es su nombre de usuario de Docker Hub. Por ejemplo:
|
1 |
docker commit -m "added mysql-server" -a "CloudSigma" 59839a1b7de2 finid/centos-mariadb |
|
1 |
Nota: Después de que la nueva imagen se confirme, se guarda en su sistema. En. las siguientes etapas de este tutorial, aprenderá, cómo subir una imagen a Docker Hub y a registros similares que alojan imágenes de docker. Una vez que su. imagen se suba al registro, otros también pueden, acceder a ella.accessed by others as well. |
Ahora que la imagen está confirmada, el comando docker images debería listar la nueva imagen así como las antiguas:
|
1 |
docker images |
La salida del comando debería ser similar a la siguiente:
|
1 2 3 4 5 |
Salida: REPOSITORIO TAG IMAGE ID CREADO TAMAÑO cloudsigma23/centos-mysql latest 1b9368efea70 13 segundos atrás 308MB centos latest 300e315adb2f 2 meses atrás 209MB hello-world latest bf756fb1ae65 13 meses atrás 13.3kB |
Como se ve en el ejemplo, se crea una nueva imagen centos-mysql utilizando la imagen de CentOS de Docker Hub. La diferencia de tamaño determina que se realizaron algunos cambios. En este ejemplo, fue la adición del servidor MySQL en el contenedor. La próxima vez que necesite un contenedor con un servidor MySQL, simplemente puede ejecutar la nueva imagen, ¡y listo! Tendrá un contenedor CentOS con un servidor MySQL preinstalado ejecutándose.
Paso 7: Gestión de contenedores de Docker
Ahora que está familiarizado con Docker, después de usarlo durante algún tiempo ya tiene algunos contenedores activos y otros inactivos. Para obtener la lista de contenedores activos debe usar:
|
1 |
docker ps |
Debería ver una salida similar:
|
1 2 3 |
Salida: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 604c889cf404 centos "/bin/bash" 20 minutos atrás Up 20 minutos intelligent_easley |
Para listar tanto los contenedores activos como los inactivos, debe usar la bandera -a con el comando:
|
1 |
docker ps -a |
Para encontrar el último contenedor que creó, puede proporcionar la bandera -l:
|
1 |
docker ps -l |
Para detener un contenedor activo/en ejecución, ejecute un comando simple:
|
1 |
docker stop container-id |
Puede encontrar el container-id en la salida del comando Docker ps.
Paso 8: Publicar las imágenes en un repositorio
El siguiente paso después de crear la nueva imagen es compartirla con sus amigos. También puede ponerla a disposición de todo el mundo utilizando Docker Hub o cualquier otro registro. Es necesario iniciar sesión en el registro respectivo antes de subir (push) la imagen.
En la siguiente parte del tutorial, aprenderá cómo subir las imágenes a Docker Hub. Primero, regístrese en Docker Hub. Deberá iniciar sesión en Docker Hub para subir su imagen utilizando el siguiente comando:
|
1 |
docker login -u docker-registry-username |
Una vez que proporcione la contraseña correcta y la autenticación sea exitosa, podrá subir su imagen. Para subir la imagen, use el siguiente comando:
|
1 |
docker push docker-registry-username/docker-image-name |
La salida del comando será similar a esta:
|
1 2 3 4 5 |
Salida: El push se refiere al repositorio [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: Subido 2653d992f4ef: Montado desde library/centos ... |
Una vez que haya subido la imagen, debería aparecer en el panel de control de su cuenta, como se muestra en la imagen a continuación:

En caso de que falle de manera similar, es probable que no haya iniciado sesión:
|
1 2 3 4 5 6 7 |
Salida: El push se refiere al repositorio [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: La capa ya existe 2653d992f4ef: La capa ya existe errores: denegado: solicitado acceso a el recurso está denegado no autorizado: autenticación requerida |
Puede iniciar sesión y repetir el intento de push.
Conclusión
Hay varias formas en las que puede utilizar Docker. Este tutorial debería proporcionarle suficiente información para comenzar. Y dado que Docker es un proyecto de gran tendencia, puede encontrar muchos detalles sobre el uso, así como diferentes casos de uso, en la página de blog del proyecto.
También puede consultar nuestros otros tutoriales de Docker para obtener más información sobre lo que puede hacer con Docker:
- Limpiar recursos de Docker: imágenes, contenedores y volúmenes
- Implementar Laravel, Nginx y MySQL con Docker Compose
- Ejecutar su propio servidor VPN en Docker con OpenVPN Access Server
¡Feliz computación!
Comentarios
Aún no hay comentarios. Sea el primero.