Listar todos los servicios en una pila
En este paso, aprenderá cómo listar todos los servicios que se ejecutan dentro de una pila (stack) de Docker. Antes de poder listar los servicios, necesitamos tener una pila en funcionamiento. Dado que Docker Compose no está preinstalado, primero lo instalaremos y luego desplegaremos una pila simple.
Primero, instalemos Docker Compose. Descargaremos el binario y lo haremos ejecutable.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Ahora que Docker Compose está instalado, creemos un archivo docker-compose.yml
simple para definir nuestra pila. Crearemos un archivo llamado docker-compose.yml
en el directorio ~/project
.
nano ~/project/docker-compose.yml
Agregue el siguiente contenido al archivo:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
app:
image: alpine:latest
command: sleep 3600
Este archivo define una pila con dos servicios: web
que utiliza la imagen nginx
y app
que utiliza la imagen alpine
. El servicio web
mapea el puerto 80 del host al puerto 80 del contenedor. El servicio app
simplemente ejecuta el comando sleep 3600
para mantener el contenedor en ejecución.
Guarde el archivo y salga del editor (Ctrl+X, Y, Enter en nano).
Ahora, despleguemos la pila utilizando docker stack deploy
. Nombraremos nuestra pila mystack
.
docker stack deploy -c ~/project/docker-compose.yml mystack
Este comando lee el archivo docker-compose.yml
y crea los servicios definidos en él como una pila de Docker llamada mystack
. Debería ver una salida que indique que se están creando los servicios.
Una vez que la pila está desplegada, puede listar todos los servicios en la pila utilizando el comando docker stack services
seguido del nombre de la pila.
docker stack services mystack
Este comando mostrará una tabla con información sobre los servicios en la pila mystack
, incluyendo su ID, nombre, modo, réplicas, imagen y puertos.
Debería ver una salida similar a esta:
ID NAME MODE REPLICAS IMAGE PORTS
xxxxxxxxxxxx mystack_app replicated 1/1 alpine:latest
xxxxxxxxxxxx mystack_web replicated 1/1 nginx:latest *:80->80/tcp
La salida enumera los servicios mystack_app
y mystack_web
, lo que confirma que se están ejecutando como parte de la pila mystack
.