Este tutorial continúa la serie de artículos relacionados con Docker y cubre los comandos de Docker más utilizados. Comenzaremos con una breve descripción general de Docker y luego pasaremos a la instalación de Docker en su servidor. A continuación, lo guiaremos a través de todos los comandos necesarios para administrar contenedores, imágenes y volúmenes de Docker. Conviértase en un usuario profesional de Docker siguiendo esta guía en 10 minutos.
Que es Docker
Docker es una plataforma abierta para desarrollar, enviar y ejecutar aplicaciones. Es el estándar de facto para empaquetar y compartir aplicaciones, desde el escritorio hasta la nube.
Para lograr su objetivo, Docker utiliza contenedores.
El contenedor tiene las siguientes características:
- Un contenedor es un paquete para el software y todas las bibliotecas necesarias.
- Tan pronto como se inicia, un contenedor determina un entorno de tiempo de ejecución para su aplicación.
- Un contenedor es más liviano que una máquina virtual, por lo que se puede lanzar mucho más rápido.
- Un contenedor se distribuye en forma de imagen, que consta de varias capas. Múltiples contenedores pueden reutilizar estas capas.
Las funciones anteriores le permiten:
- Cree entornos aislados para la implementación.
- Inicie sus aplicaciones en minutos.
Docker lo ayuda a simplificar y automatizar cada paso del proceso de desarrollo de software.
Estas son las características esenciales de Docker:
- Docker tiene una comunidad gigante.
- Docker es una forma sencilla y ligera de distribuir software.
- Docker tiene un repositorio público gigante de contenedores para todos los propósitos posibles.
- Docker reduce los costos de desarrollo y operaciones.
- La configuración de Docker es sencilla y rápida.
- Docker proporciona aislamiento de aplicaciones.
- La imagen de Docker tiene capas, que tiene control de versiones.
- Docker automatiza cada paso de la gestión de contenedores.
Puede instalar Docker en los sistemas operativos Linux, macOS y Windows.
Instalar Docker
Esta sección describe cómo instalar el paquete Docker CE (edición comunitaria) en el sistema operativo Linux.
Si utiliza la nube de AWS, le sugiero un artículo sobre la instalación automática de Docker en la instancia EC2 mediante CloudFormation.
Instalar Docker en Ubuntu/Debian
De forma predeterminada, el repositorio predeterminado de Ubuntu o Debian no contiene la última versión del paquete Docker CE. Por lo tanto, deberá agregar el repositorio oficial de Docker CE a su sistema.
Antes de agregar el repositorio, instale algunas dependencias requeridas ejecutando el siguiente comando:
apt-get install apt-transport-https ca-certificates curl software-properties-common curl -y
Después de instalar todas las dependencias, importe la clave GPG de Docker con el siguiente comando:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
A continuación, agregue el repositorio oficial de Docker CE al archivo fuente APT con el siguiente comando:
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Una vez que se haya agregado el repositorio, deberá actualizar el caché del repositorio. Puede actualizarlo con el siguiente comando:
apt-get update -y
Una vez que su repositorio esté actualizado, ejecute el siguiente comando para instalar la última versión de Docker CE en su sistema.
apt-get install docker-ce -y
El comando anterior instalará el paquete Docker CE en su sistema e iniciará el servicio automáticamente.
Puede verificar la versión instalada de Docker CE ejecutando el siguiente comando:
docker --version
Debería ver la versión de Docker en el siguiente resultado:
Docker version 19.03.13, build 4484c46d9d
Si desea eliminar el paquete Docker de su sistema, ejecute el siguiente comando:
apt-get remove docker-ce
Instalar Docker en CentOS/RHEL
Para el sistema operativo CentOS o RHEL, deberá instalar el repositorio Docker CE en su sistema. Puede usar el comando DNF para agregar y habilitar el repositorio de Docker CE como se muestra a continuación:
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Una vez que se haya agregado el repositorio de Docker CE, puede enumerar todas las versiones disponibles de Docker CE ejecutando el siguiente comando:
dnf list docker-ce --showduplicates | sort -r
Debería obtener la lista completa en el siguiente resultado:
docker-ce.x86_64 3:19.03.13-3.el8 docker-ce-stable
Docker CE Stable - x86_64 54 kB/s | 3.8 kB 00:00
CentOS-8 - Extras 14 kB/s | 8.1 kB 00:00
CentOS-8 - Base 4.6 MB/s | 2.2 MB 00:00
CentOS-8 - AppStream 4.7 MB/s | 5.8 MB 00:01
Available Packages
A continuación, instale la última versión de Docker CE ejecutando el siguiente comando:
dnf install docker-ce --nobest
Una vez que Docker esté instalado, verifique la versión instalada con el siguiente comando:
docker --version
Deberías obtener el siguiente resultado:
Docker version 19.03.13, build 4484c46d9d
Para iniciar el servicio Docker, ejecute el siguiente comando:
systemctl start docker
Para detener el servicio de Docker, ejecute el siguiente comando:
systemctl stop docker
También puede ejecutar el siguiente comando para mostrar más información sobre Docker:
docker info
Debería ver el siguiente resultado:
Si desea eliminar el paquete Docker de su sistema, ejecute el siguiente comando:
dnf remove docker-ce
Administración de contenedores con Docker
El docker container
El comando se utiliza para administrar el ciclo de vida del contenedor. Si no tiene la imagen desde la que ejecutar el contenedor, Docker irá al registro, descárguelo.
Ejecutar contenedor Docker
Utilice la siguiente sintaxis para descargar la imagen del registro de Docker y crear un contenedor.
docker container run [your-image-name]
Por ejemplo, ejecute el siguiente comando para crear un contenedor de servidor web Apache:
docker container run httpd
Deberías obtener el siguiente resultado:
Puede usar la opción --rm
con el comando de ejecución de Docker para eliminar un contenedor después de que salga.
docker container run --rm httpd
Conectar a Docker Container Shell
Puedes usar la opción -it
con el comando de ejecución de Docker para crear e iniciar el contenedor Apache y adjuntarlo al shell bash interactivo.
docker container run -it httpd /bin/bash
Deberías obtener el siguiente resultado:
Iniciar contenedor Docker en segundo plano
Ahora puede ejecutar cualquier comando dentro del contenedor.
Puedes usar la opción -td
con el comando de ejecución de Docker para crear e iniciar el contenedor de Apache y mantenerlo en ejecución.
docker container run -td httpd
Deberías obtener el siguiente resultado:
Configurar el nombre del contenedor Docker
Puedes usar la opción --name
con el comando de ejecución de Docker para asignar un nombre de contenedor usando la siguiente sintaxis:
docker container run --name [container-name] -td [image-name]
Por ejemplo, cree un nuevo contenedor a partir de la imagen de Apache y asigne un nombre apacheweb
con el siguiente comando:
docker container run --name apacheweb -td httpd
Enlazar contenedor Docker en el puerto específico
Si desea acceder al proceso de contenedor de la máquina externa, puede exponer un puerto de contenedor a la red externa.
En este caso, puedes usar la opción -p
con el comando Docker para exponer el puerto específico como se muestra a continuación:
docker container run -p [host-port]:[container-port] --name [container-name] -dit [image-name]
Por ejemplo, cree un contenedor de servidor web apache y exponga el puerto del contenedor 80 al puerto 8080 con el siguiente comando:
docker container run -p 8080:80 --name apacheweb -dt httpd
Ahora puede acceder al servidor web apache que se ejecuta dentro del contenedor utilizando la URL http://localhost:8080 .
Lista de todos los contenedores Docker
Para enumerar todos los contenedores en ejecución y detenidos en su sistema, ejecute el siguiente comando:
docker ps -a
Debería ver todos los contenedores en el siguiente resultado:
Para enumerar solo los contenedores en ejecución en su sistema, ejecute el siguiente comando:
docker ps
También puede listar el contenedor con el siguiente comando:
docker container ls
Mostrar estadísticas del contenedor Docker
Para mostrar las estadísticas en vivo del contenedor en ejecución (utilización de CPU y memoria, E/S de red y disco) llamado apacheweb
, ejecute el siguiente comando:
docker stats apacheweb
Debería ver el siguiente resultado:
Mostrar todos los procesos del contenedor Docker
Para enumerar todos los procesos en ejecución dentro del contenedor en ejecución llamado apacheweb , ejecute el siguiente comando:
docker top apacheweb
Debería ver el siguiente resultado:
Mostrar registros de contenedores de Docker
Para mostrar los registros del contenedor en ejecución llamado apacheweb , ejecute el siguiente comando:
docker logs apacheweb
Debería ver el siguiente resultado:
Iniciar, detener y pausar contenedor Docker
Para detener el contenedor en ejecución llamado apacheweb , ejecute el siguiente comando:
docker container stop apacheweb
Para iniciar el contenedor llamado apacheweb , ejecute el siguiente comando:
docker container start apacheweb
Para pausar el contenedor llamado apacheweb , ejecute el siguiente comando:
docker container pause apacheweb
Reiniciar o eliminar el contenedor Docker
Para reiniciar el contenedor en ejecución llamado apacheweb , ejecute el siguiente comando:
docker container restart apacheweb
Para eliminar el contenedor en ejecución llamado apacheweb , ejecute el siguiente comando:
docker container kill apacheweb
Adjuntar a un contenedor Docker que ya se está ejecutando
Para conectarse al contenedor en ejecución, ejecute el siguiente comando:
docker container exec -it apacheweb /bin/bash
Para ejecutar cualquier comando dentro del contenedor en ejecución, ejecute el siguiente comando:
docker container exec -it apacheweb ls
Administración de imágenes de Docker
En esta sección, le mostraremos algunos de los comandos más utilizados para administrar la imagen de Docker.
Descargar imagen de Docker desde el registro
Para descargar o extraer la imagen del registro de Docker, use la siguiente sintaxis:
docker pull [image-name]
Por ejemplo, puede extraer la imagen del servidor web Nginx del registro de Docker con el siguiente comando:
docker pull nginx
Deberías obtener el siguiente resultado:
Subir imagen de Docker al registro
Si desea cargar una imagen existente en el registro de Docker, use la siguiente sintaxis:
docker push [image-name]
Inicie sesión en Docker The Registry
Primero, deberá iniciar sesión en el registro de Docker con el siguiente comando:
docker login
Una vez que inicie sesión, ejecute el siguiente comando para obtener la identificación de la imagen de Nginx y etiquete la imagen con el siguiente comando:
docker images
Salida:
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest f35646e83998 3 weeks ago 133MB
httpd latest 3dd970e6b110 3 weeks ago 138MB
Agregar etiqueta a la imagen de Docker
A continuación, etiquete la imagen con el siguiente comando:
docker tag f35646e83998 amaksimov/nginx
donde:
f35646e83998
es la identificación de la imagen, amaksimov es el nombre de registro de Docker y nginx es el nombre de la imagen.
A continuación, inserte la imagen de Nginx en el registro de Docker con el siguiente comando:
docker push amaksimov/nginx
Debería ver el siguiente resultado:
Crear imagen Docker desde contenedor en ejecución
También puede crear una imagen a partir de un contenedor existente utilizando la siguiente sintaxis:
docker commit [container-name] [new-image-name]
Por ejemplo, cree una imagen desde el contenedor de Apache, ejecute el siguiente comando:
docker commit apacheweb apache-image
Para guardar su imagen existente en el archivo tar ejecutando el siguiente comando:
docker save apache-image > apache-image.tar
Historia de la imagen de Docker
Puede imprimir el historial de cualquier imagen de Docker con el siguiente comando:
docker history apache-image
Deberías obtener el siguiente resultado:
Eliminar imagen de Docker
Puede eliminar cualquier imagen de Docker con la siguiente sintaxis:
docker rmi [image-name]
Por ejemplo, si desea eliminar la imagen de Apache, deberá detener el contenedor que utiliza el httpd
imagen:
docker container stop apacheweb
docker rm apacheweb
Primero, debemos eliminar apache-image
imagen:
docker rmi apache-image
Solo después, eliminamos el httpd
imagen con el siguiente comando:
docker rmi httpd
Con el tiempo, las imágenes y los contenedores creados manualmente pueden causar problemas en su servidor. Eche un vistazo a nuestras preguntas frecuentes de Docker para saber cómo limpiar todo.
Administración de volúmenes de Docker
Cuando crea un nuevo contenedor, almacena algunos datos y elimina el contenedor, los datos se perderán. En este caso, puede crear un volumen en el sistema host e iniciar un contenedor utilizando este volumen. Después de eliminar el contenedor, puede recuperar los datos del volumen. También puede usar el volumen de Docker para compartir los datos entre varios contenedores.
En esta sección, usaremos algunos docker volume
con mayor frecuencia. comandos con ejemplos.
Crear volumen de Docker
Para crear un nuevo volumen llamado datavolume
con el siguiente comando:
docker volume create datavolume
Lista de todos los volúmenes de Docker
Para enumerar su volumen creado, ejecute el siguiente comando:
docker volume ls
Debería ver el siguiente resultado:
Imprimir información de volumen de Docker
Para imprimir más información sobre el volumen, ejecute el siguiente comando:
docker inspect datavolume
Debería ver el siguiente resultado:
Montar volumen en contenedor Docker
Para crear un nuevo contenedor llamado apacheweb y montar el volumen de datos en el sistema host en el directorio /mnt del contenedor, ejecute el siguiente comando:
docker run -it --name apacheweb1 --mount source=datavolume,destination=/mnt -td httpd
Volumen de acoplador remoto
Para eliminar el volumen, ejecute el siguiente comando:
docker volume rm datavolume
Preguntas frecuentes de Docker
Cómo eliminar imágenes Docker no utilizadas
Para eliminar todas las imágenes acoplables no utilizadas, debe ejecutar el siguiente comando:
docker rmi $(docker images -a -q)
Cómo eliminar todos los contenedores Docker salidos
Todos los contenedores de Docker que hayan salido se pueden eliminar ejecutando el siguiente comando:
docker rm $(docker ps -a -f status=exited -q)
Cómo detener y eliminar todos los contenedores Docker
Para detener todos los contenedores de Docker, debe ejecutar:
docker stop $(docker ps -a -q)
Para eliminar todos los contenedores Docker detenidos, debe ejecutar:
docker rm $(docker ps -a -q)
Cómo eliminar todas las imágenes, contenedores, volúmenes y redes de Docker sin usar
Para eliminar todos los recursos de Docker no utilizados, puede usar el siguiente comando:
docker system prune
Para eliminar completamente todos los recursos de Docker (usados y no usados), ejecute el siguiente comando:
docker system prune -a
Resumen
En la guía anterior, aprendió sobre los comandos de Docker más utilizados y su uso con ejemplos. Espero que esto te ayude a realizar las tareas del día a día.