Note:
- Este tutorial está disponible en un entorno de prácticas gratuito proporcionado por Oracle.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
Ejecución de contenedores Podman en Systemd con Quadlet
Introducción
Quadlet proporciona una forma de ejecutar contenedores en systemd dentro de Oracle Linux. Defina el contenedor que se va a ejecutar en una sección [Container]
en un formato familiar para la sintaxis de línea de comandos de Podman estándar y aproveche todas las ventajas de las opciones [Unit]
y [Service]
de systemd. La ventaja de usar systemd para ejecutar sus contenedores es que systemd está integrado en el sistema operativo, por lo que puede tener contenedores que se inician cuando el sistema se inicia o establecen el orden y la dependencia entre una configuración de varios contenedores.
Quadlet sustituye un método anterior Podman utilizado para la integración con systemd. Ese método consiste en crear un contenedor, generar un archivo de servicio, mover el archivo de servicio y, a continuación, activar el servicio. En muchos casos, los usuarios dedicarían tiempo a escribir estos pasos en scripts de Bash y luego tendrían que mantener esos scripts y los archivos generados. En función de la perspectiva de un usuario, Quadlet simplifica esta tarea.
Objetivos
En este tutorial, aprenderá a:
- Crear un archivo .container
- Iniciar el nuevo servicio de contenedor
- Probar el contenedor
- Actualizar el contenedor
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
- Paquetes de Podman y cURL
- Cgrupo v2
- Acceso a internet
Desplegar 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 use_podman=true -e update_all=true -e os_version="9"
El entorno de prácticas gratuito 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 de RPM para el SDK para Python de Oracle Cloud Infrastructure, ubicado en los módulos python3.6.La unidad de despliegue por defecto utiliza la CPU AMD y Oracle Linux 8. Para utilizar una CPU de 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, la instalación de Oracle Linux está completa 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 durante la ejecución del laboratorio.
Confirmar trabajos de Podman
El paquete de herramientas de contenedor en Oracle Linux proporciona las últimas versiones de Podman, Buildah, Skopeo y las dependencias asociadas.
-
Abra un terminal y conéctese mediante SSH a la instancia ol-node-01.
ssh oracle@<ip_address_of_instance>
-
Comprueba la versión de Podman.
podman -v
-
Confirme que la CLI de Podman esté funcionando.
podman run quay.io/podman/hello
Salida de ejemplo:
[oracle@ol-server ~]$ podman run quay.io/podman/hello Trying to pull quay.io/podman/hello:latest... Getting image source signatures Copying blob f82b04e85914 done Copying config dbd85e09a1 done Writing manifest to image destination Storing signatures !... Hello Podman World ...! .--"--. / - - \ / (O) (O) \ ~~~| -=(,Y,)=- | .---. /` \ |~~ ~/ o o \~~~~.----. ~~ | =(X)= |~ / (O (O) \ ~~~~~~~ ~| =(Y_)=- | ~~~~ ~~~| U |~~ Project: https://github.com/containers/podman Website: https://podman.io Documents: https://docs.podman.io Twitter: @Podman_io
Crear un cuadlet
Un cuádruple es sólo la creación de un archivo .container en un directorio específico que contiene una sección [Container]
que describe las opciones de inicio del contenedor.
-
Cree el directorio systemd del contenedor de los usuarios.
mkdir -p ~/.config/containers/systemd
-
Cree un archivo .container.
cat << EOF | tee ~/.config/containers/systemd/test-ol.container > /dev/null [Unit] Description=My First Quadlet [Container] Image=ghcr.io/oracle/oraclelinux:9 AutoUpdate=registry Exec=sleep 60 [Service] Restart=always TimeoutStartSec=900 [Install] WantedBy=multi-user.target default.target EOF
Este cuadlet ejecuta el contenedor de Oracle Linux y realiza un
sleep 60
en el contenedor. Una vez que se completasleep 60
, el contenedor se cierra y, a continuación, systemd lo reinicia. Existen otras opciones para la sección[Container]
y hay una lista disponible en la documentación upstream.Consulte la página del comando man systemd.unit(5) para obtener más información sobre las opciones
[Service]
,[Unit]
y[Install]
. -
Active la persistencia para el usuario.
sudo loginctl enable-linger oracle
-
Informe systemd del nuevo archivo de unidad.
systemctl --user daemon-reload
Este paso crea test-ol.service según el archivo test-ol.container.
-
Inicie el servicio.
systemctl --user start test-ol.service
El servicio ejecuta
podman
para descargar la imagen de Oracle Linux y, a continuación, ejecutasleep 60
dentro de la imagen de contenedor. -
Compruebe el estado del servicio.
systemctl --user status test-ol.service
Repita este comando para ver el contenedor detenerse y reiniciarse después de ejecutar
sleep 60
. También puede comprobar los logs ejecutandosudo journalctl _SYSTEMD_USER_UNIT=test-ol.service
. -
Actualice el contenedor.
Con la entrada
AutoUpdate=registry
en la sección[Container]
, activa la funciónpodman auto-update
para actualizar las imágenes de contenedor. Sin embargo, si desea que esto suceda automáticamente en lugar de manualmente, también debe activar el servicio necesario.systemctl --user enable podman-auto-update
Manualmente, puede ejecutar
podman auto-update --dry-run
para ver si hay una actualización disponible. Ya que acabamos de descargar la última imagen hace unos minutos, no hay actualizaciones, y por lo tanto, no hay nada que hacer. Sin embargo, si hay una actualización, puede eliminar la opción--dry-run
ypodman
extraerá la última imagen y reiniciará el contenedor.
Pasos Siguientes
En este tutorial se muestra cómo aprovechar Quadlet para gestionar un contenedor mínimo mediante systemd. Obtenga más información leyendo la documentación y creando contenedores adicionales que aprovechen el almacenamiento y tengan dependencias de varios contenedores.
Enlaces relacionados
- Documentación de Quadlet Upstream
- Documentación de Oracle Linux
- Oracle Learning Library
- Oracle Linux Training Station
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita 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.
Run Podman Containers Under Systemd with Quadlet
G32064-01
Copyright ©2025, Oracle and/or its affiliates.