Docker le brinda todo lo que necesita para crear y ejecutar contenedores en su sistema Linux. Los contenedores son similares a las máquinas virtuales ligeras. Le permiten crear imágenes de aplicaciones portátiles que se ejecutan utilizando el kernel del sistema operativo de su host.
Puede usar Docker en las plataformas Debian, Fedora, CentOS y Raspbian. Los derivados de esas distribuciones también funcionarán. Docker proporciona compilaciones x86/x64 y ARM para la mayoría de las plataformas compatibles. Estamos usando un sistema Debian con apt
administrador de paquetes para esta guía. Las instrucciones específicas para otras distribuciones se pueden encontrar en los documentos de Docker.
Docker Compose le permite crear y ejecutar pilas de varios contenedores. Creas un archivo YAML que configura los contenedores de tu aplicación. Luego puede usar un solo comando para iniciar todos los contenedores y vincularlos. Compose lo ayuda a separar los componentes de su pila en servicios individuales en contenedores.
Compose se distribuye independientemente de Docker. Instale Docker antes de agregar Compose; de lo contrario, Compose no podrá funcionar.
RELACIONADO: Cómo usar Docker para contener PHP y Apache
Instalar Docker
Puede usar el administrador de paquetes de su sistema operativo para instalar la última versión de Docker. Deberá agregar el repositorio de Docker, actualizar sus listas de paquetes y luego instalar Docker.
Debian/Ubuntu
Comience agregando las dependencias necesarias para el proceso de instalación:
sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
A continuación, agregue la clave GPG del repositorio de Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Agregue el repositorio a sus fuentes y actualice sus listas de paquetes:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update
Ahora puede instalar Docker:
sudo apt-get install docker-ce docker-ce-cli containerd.io
Fedora
Agregue el repositorio de paquetes de Docker:
sudo dnf -y install dnf-plugins-core sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
Instalar ventana acoplable:
sudo dnf install docker-ce docker-ce-cli containerd.io
Cent OS
Agregue el repositorio de paquetes de Docker:
sudo yum -y install yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
Instalar ventana acoplable:
sudo yum install docker-ce docker-ce-cli containerd.io
Usando Docker sin Sudo
El demonio Docker se ejecuta como root
. Por lo general, debe prefijar los comandos de Docker con sudo
. Esto puede volverse tedioso si usa Docker con frecuencia. Agregarse a sí mismo a la docker
group te permitirá usar Docker sin sudo
.
sudo usermod -aG docker $USER
Una vez que esté en el grupo, cierre sesión y vuelva a iniciar sesión. Alternativamente, ejecute la ventana acoplable newgrp docker
Comando para iniciar sesión inmediatamente en el grupo actualizado. Ahora debería poder soltar sudo
desde los comandos de Docker.
Prueba de la instalación de Docker
Ahora que Docker está instalado, ¡es hora de probar que funciona! Puedes usar el mínimo hello-world
imagen.
docker run hello-world:latest
Debería ver aparecer algunas líneas de salida en su terminal. Docker primero buscará el hello-world:latest
imagen en su máquina. Como no existirá, la imagen se extraerá del repositorio de Docker Hub.
Una vez extraída la imagen, se creará un nuevo contenedor a partir de ella. El contenedor está configurado para emitir un mensaje básico de "hola mundo" y luego salir. Si ve el texto, ¡la instalación de Docker está funcionando!
Administración del servicio Docker
Puede verificar si Docker se está ejecutando inspeccionando su servicio con systemctl
. Hay dos componentes a considerar, docker
y containerd
. docker
es el demonio de Docker Engine al que la CLI envía comandos. containerd
es el tiempo de ejecución subyacente que realmente ejecuta sus contenedores.
sudo systemctl status docker.service sudo systemctl status containerd.service
Puede administrar los demonios como cualquier otro servicio en su sistema. Usa systemctl stop
si desea detener temporalmente Docker y liberar los recursos del sistema utilizados por sus contenedores:
sudo systemctl stop docker.service
Puede reiniciar el servicio con systemctl start
.
Agregando Docker-Compose
docker-compose
es un binario separado que se descarga mejor directamente desde las versiones de GitHub del proyecto. Las distribuciones de Linux más populares incluyen Compose en sus administradores de paquetes, pero puede estar significativamente desactualizado.
Dirígete a la página de lanzamientos de Docker Compose y toma nota del último número de versión. En el momento de escribir este artículo, era 1.29.0
.
Sustituya la versión que ve en lugar de 1.29.0
en el comando de abajo. Esto descargará el binario correcto para su sistema y lo colocará en /usr/local/bin
.
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
A continuación, haga que el archivo sea ejecutable:
sudo chmod +x /usr/local/bin/docker-compose
Ahora podrá usar docker-compose
comando en su terminal. Intente ejecutar docker-compose --version
para comprobar.
Creación de un archivo simple de Docker-Compose
Para usar docker-compose
debe crear un docker-compose.yml
expediente. Esto describe los contenedores que componen la pila de su aplicación. Puede especificar enlaces de puertos, variables de entorno, redes y volúmenes que utilizan sus contenedores.
Contenedores declarados en el mismo docker-compose.yml
El archivo se convierte automáticamente en parte de la misma pila. Están vinculados entre sí en una red Docker, por lo que pueden comunicarse entre sí mediante su docker-compose.yml
nombres de servicio como nombres de host.
Aquí hay un docker-compose.yml
simple para ejecutar un servidor web PHP y una base de datos MySQL:
version: "3" services: app: image: php8.0-apache environment: - MYSQL_SERVER=mysql - MYSQL_USERNAME=root - MYSQL_PASSWORD=example ports: - ${PORT:-80}:80 restart: unless-stopped mysql: image: mysql:8.0 expose: - 3306 environment: - MYSQL_ROOT_PASSWORD volumes: - mysql:/var/lib/mysql restart: unless-stopped volumes: mysql:
Puede iniciar ambos servicios ejecutando docker-compose up -d
. Verá que ambas imágenes se extraen de Docker Hub. A continuación, se iniciarán los contenedores. Puede detenerlos a ambos usando docker-compose stop
. Usa docker-compose down
para retirar los contenedores.
El archivo YAML de ejemplo muestra algunas características de Docker Compose. Los contenedores se definen en services
nodo, con cada contenedor declarando su image
de Docker . Puede pasar variables de entorno de shell a contenedores (environments
) y configurar los enlaces de puertos de Docker (ports
). Las variables de entorno se pueden interpolar en cadenas usando el ${VARIABLE:-DEFAULT}
sintaxis. Si la variable no está configurada en su shell, DEFAULT
se utilizará como el valor en su lugar. Puede obtener más información sobre Docker Compose en nuestra guía dedicada.
Resumen
Puede instalar Docker fácilmente utilizando los administradores de paquetes de distribuciones populares de Linux. Agregue el repositorio de Docker y luego instale docker-ce
, docker-ce-cli
y containerd.io
. Estos componentes le brindan todo lo que necesita para crear y ejecutar sus contenedores.
Una vez que esté funcionando, puede escribir un Dockerfile
y usa docker build -t my-app:latest .
para construirlo Luego use docker run my-app:latest
para iniciar su contenedor.
Docker-Compose es una capa de abstracción adicional que facilita la ejecución de una "pila" de varios contenedores. Con Compose, no necesita ejecutar manualmente varios comandos en serie. Puede escribir un archivo YAML declarativo y usar docker-compose up
para iniciar todos sus contenedores al unísono.
RELACIONADO: ¿Qué es Docker Compose y cómo se usa?