Note:
- Este tutorial está disponible en un entorno de laboratorio gratuito proporcionado por Oracle.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Uso de la composición de archivos con Podman en Oracle Linux
Introducción
Podman y Docker Compose son herramientas de línea de comandos que utilizan un archivo YAML con formato especial como entrada para ensamblar y, a continuación, ejecutar uno o varios contenedores como aplicaciones. Estas herramientas permiten a los desarrolladores desarrollar, probar y, a continuación, entregar a sus usuarios un único archivo YAML para su aplicación y utilizar solo un comando para iniciarlo y detenerlo de forma fiable. Esta portabilidad y fiabilidad han hecho que el uso de la especificación Compose sea muy popular entre los usuarios y desarrolladores, y se está convirtiendo cada vez más en un requisito.
Objetivos
En este tutorial, aprenderá a:
- Instalar y utilizar
podman-compose
ydocker-compose
con Podman - Verifique que funcionan con un archivo
docker-compose.yaml
simple
Requisitos
-
Mínimo de un único sistema Oracle Linux
-
Cada sistema debe tener Oracle Linux instalado y configurado con:
- Una cuenta de usuario no raíz con acceso sudo
- Acceso a internet
Despliegue de Oracle Linux
Nota: Si se ejecuta en su propio arrendamiento, lea el proyecto linux-virt-labs
GitHub README.md y complete los requisitos antes de desplegar el entorno de prácticas.
-
Abra un terminal en el escritorio Luna.
-
Clone el proyecto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Cambie al directorio de trabajo.
cd linux-virt-labs/ol
-
Instale las recopilaciones necesarias.
ansible-galaxy collection install -r requirements.yml
-
Despliegue el entorno de prácticas.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e update_all=true
El entorno de prácticas libres necesita la variable adicional
local_python_interpreter
, que defineansible_python_interpreter
para las reproducciones que se ejecutan en localhost. Esta variable es necesaria porque el entorno instala el paquete RPM para el SDK para Python de Oracle Cloud Infrastructure, que se encuentra en los módulos python3.6.La unidad de despliegue por defecto utiliza la CPU AMD y Oracle Linux 8. Para utilizar una CPU Intel u Oracle Linux 9, agregue
-e instance_shape="VM.Standard3.Flex"
o-e os_version="9"
al comando de despliegue.Importante: Espere a que el cuaderno de estrategias se ejecute correctamente y alcance la tarea de pausa. En esta etapa del manual, se ha completado la instalación de Oracle Linux y las instancias están listas. Tome nota de la reproducción anterior, que imprime las direcciones IP públicas y privadas de los nodos que despliega y cualquier otra información de despliegue necesaria al ejecutar el ejercicio práctico.
Configurar Podman para trabajar con archivos de composición
Podman introdujo el soporte para la funcionalidad Docker Compose en Podman v3.2.0, después de que se introdujo el soporte limitado en Podman v3.0.0, lo que introdujo la capacidad de usar Docker Compose desde Podman. Más recientemente, Podman v4.1.0 amplió el soporte de la funcionalidad de Docker Compose para incluir el uso de Docker Compose v2.2 y posteriores.
Instalación del paquete Docker de Podman
Instale el paquete podman-docker
, que permite que Podman funcione de forma nativa con los comandos de Docker.
sudo dnf install -y podman-docker
Instalación de Docker Compose
-
Descargue e instale Compose independiente.
sudo curl -SL https://github.com/docker/compose/releases/download/v2.28.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
Salida de ejemplo:
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 60.1M 100 60.1M 0 0 103M 0 --:--:-- --:--:-- --:--:-- 378M
-
Aplique permisos ejecutables al binario.
sudo chmod +x /usr/local/bin/docker-compose
-
Confirmar creación de trabajos independientes.
docker-compose version
La salida devuelve la versión actual de
docker-compose
.Nota: Instalar Compose de forma autónoma, como se describe aquí, requiere el uso de
docker-compose up
, por ejemplo, en lugar de la sintaxisdocker-compose up
estándar utilizada al ejecutar la utilidad Docker.
Inicio del Socket Podman
Podman y Docker Compose requieren el inicio del socket Podman, que permite que las llamadas del sistema de cada programa se comuniquen con Podman a través de este proceso controlado por systemd.
-
Configure el socket de Podman.
systemctl --user enable --now podman.socket systemctl --user status podman.socket
La salida muestra el socket systemd
active (listening)
. -
Obtener la ubicación del socket Podman del usuario.
podman info | grep -i remotesocket -A2
-
Verifique que el socket funcione con cURL.
curl -w "\n" -H "Content-Type: application/json" --unix-socket /run/user/$UID/podman/podman.sock http://localhost/_ping
La ruta de acceso para
--unix-socket
coincide con la ruta proporcionada desdepodman info
. La salida de este comando debe devolverOK
, lo que indica una configuración correcta de la funcionalidad Compose que está lista para trabajar con archivos docker-compose.yaml.
Instalación de Podman Composer
Podman Compose es una biblioteca de Python 3 que implementa la especificación de composición para ejecutarla con Podman.
-
Instale y active el repositorio developer_EPEL.
Oracle Linux 8:
sudo dnf install -y oracle-epel-release-el8 sudo dnf config-manager --enable ol8_developer_EPEL
Oracle Linux 9:
sudo dnf install -y oracle-epel-release-el9 sudo dnf config-manager --enable ol9_developer_EPEL
Oracle Linux 10:
sudo dnf install -y oracle-epel-release-el10 sudo dnf config-manager --enable ol10_u0_developer_EPEL
-
Instale el paquete Podman Compose.
sudo dnf install -y podman-compose
-
Confirme que Podman Compose funciona mostrando su versión.
podman-compose version
Creación de un archivo compuesto
Este archivo Compose permite extraer e iniciar la aplicación designada.
-
Cree un directorio para la prueba y cambie al directorio correspondiente.
mkdir -p projects/echo cd projects/echo
-
Cree el archivo de redacción.
cat >> compose.yaml << EOF services: web: image: k8s.gcr.io/echoserver:1.4 ports: - "${HOST_PORT:-8080}:8080" EOF
-
Revise el archivo de redacción.
cat compose.yaml
Ejecutar composición de Podman
-
Cambie al mismo directorio que el archivo Compose.
Importante: Los comandos
podman-compose
no funcionarán a menos que esté en el mismo directorio que el archivocompose.yaml
.cd ~/projects/echo/
-
Inicie la aplicación
echoserver
.podman-compose up -d
La salida muestra a Podman desplegando el contenedor e iniciándolo con los parámetros enumerados en el archivo Compose. La opción
-d
indica a Podman que ejecute el contenedor en segundo plano en modo desasociado. Podman solo extraerá las imágenes a las que se hace referencia en el archivo Compose si no están presentes localmente. -
Pruebe que la aplicación echoserver esté activa y en ejecución.
curl -X POST -d "foobar" http://localhost:8080/; echo
Salida de ejemplo:
CLIENT VALUES: client_address=10.89.0.2 command=POST real path=/ query=nil request_version=1.1 request_uri=http://localhost:8080/ SERVER VALUES: server_version=nginx: 1.10.0 - lua: 10001 HEADERS RECEIVED: accept=*/* content-length=6 content-type=application/x-www-form-urlencoded host=localhost:8080 user-agent=curl/7.61.1 BODY: foobar
-
Además, confirme el éxito revisando los logs.
podman-compose logs
Salida de ejemplo:
``texto ['podman', '–version', ''] utilizando la versión de podman: 4.2.0 podman logs echo_web_1 10.89.0.2 - - [17/enero/2023:12:46:47 +0000] "POST / HTTP/1.1" 200 446 "-" "curl/7.61.1" código de salida: 0
-
Use la utilidad Podman Compose para ver los contenedores en ejecución.
podman-compose ps
Salida de ejemplo:
['podman', '--version', ''] using podman version: 4.2.0 podman ps -a --filter label=io.podman.compose.project=echo CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f4053947c8c1 k8s.gcr.io/echoserver:1.4 nginx -g daemon o... 2 minutes ago Up 2 minutes ago 0.0.0.0:8080->8080/tcp echo_web_1 exit code: 0
Puede ver otros comandos de la utilidad Compose de Podman ejecutando
podman-compose --help
. -
Ahora es el momento de detener el contenedor echoserver.
podman-compose down
-
Elimine la red de puente de Podman adicional creada durante el despliegue de contenedores.
podman network rm echo_default
Confirmar el funcionamiento de Docker Compose
-
Defina la variable de entorno para la ubicación del socket de Podman.
export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock
-
Inicie la aplicación echoserver.
Este comando debe ejecutarse desde el mismo directorio que el archivo Compose.
docker-compose up -d
La salida muestra la creación de la red echo_default y el contenedor echo-web-1.
-
Acceda a la aplicación del contenedor.
curl -X POST -d "foobar" http://localhost:8080/; echo
Salida de ejemplo:
[oracle@ol-server ~]$ curl -X POST -d "foobar" http://localhost:8080/; echo CLIENT VALUES: client_address=10.89.0.2 command=POST real path=/ query=nil request_version=1.1 request_uri=http://localhost:8080/ SERVER VALUES: server_version=nginx: 1.10.0 - lua: 10001 HEADERS RECEIVED: accept=*/* content-length=6 content-type=application/x-www-form-urlencoded host=localhost:8080 user-agent=curl/7.61.1 BODY: foobar
-
Inspeccione los logs y confirme que esta aplicación ha enviado correctamente una solicitud de devolución.
docker-compose logs
Salida de ejemplo:
``texto echo-web-1 | 10.89.0.1 - - [17/enero/2023:14:48:56 +0000] "POST / HTTP/1.1" 200 446 "-" "curl/7.61.1"
-
Obtenga una lista de los contenedores que comenzaron a usar la utilidad Docker Compose.
docker-compose ps
Salida de ejemplo:
echo-web-1 k8s.gcr.io/echoserver:1.4 "nginx -g daemon off;" web 12 minutes ago Up 12 minutes 8080/tcp
-
Detenga la aplicación echoserver.
docker-compose down
Información Importante
Si instala los ejecutables podman-compose
y docker-compose
en el mismo sistema, es esencial tener en cuenta que no es posible invocarlos indistintamente. Lo que queremos decir con esta sentencia es que si inicia un proceso con podman-compose
, no puede consultarlo ni pararlo con docker-compose
ni viceversa.
-
Comience por usar Podman Compose.
podman-compose up -d
-
Intente mostrar los contenedores en ejecución mediante Docker Compose.
docker-compose ps
La salida devuelve una lista vacía que muestra que, desde su perspectiva, no se está ejecutando ningún contenedor.
-
Sin embargo, el uso de Podman Compose confirma que el contenedor se está ejecutando.
podman-compose ps
Salida de ejemplo:
['podman', '--version', ''] using podman version: 4.2.0 podman ps -a --filter label=io.podman.compose.project=echo CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 55335e797296 k8s.gcr.io/echoserver:1.4 nginx -g daemon o... 4 minutes ago Up 4 minutes ago 0.0.0.0:8080->8080/tcp echo_web_1 exit code: 0
Pasos Siguientes
Esto confirma cómo utilizar un archivo Compose con Podman mediante podman-compose
o docker-compose
.
Enlaces relacionados
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.