Red Hat Training
A Red Hat training course is available for RHEL 8
8.3. Auto-geração de um arquivo de unidade do sistema usando Podman
Por padrão, Podman gera um arquivo de unidade para containers ou cápsulas existentes. Você pode gerar mais arquivos de unidade portáteis do sistema usando o podman generate systemd --new
. A bandeira --new
instrui Podman a gerar arquivos unitários que criam, iniciam e removem containers.
Procedimento
Puxe a imagem que você deseja usar em seu sistema. Por exemplo, para puxar a imagem
busybox
:# podman pull busybox:latest
Liste todas as imagens disponíveis em seu sistema:
# podman images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/busybox latest c7c37e472d31 3 weeks ago 1.45 MB
Crie o recipiente
busybox
:# podman create --name busybox busybox:latest 1e12cf95e305435c0001fa7d4a14cf1d52f737c1118328937028c0bd2fdec5ca
Para verificar se o container foi criado, liste todos os containers:
# podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1e12cf95e305 docker.io/library/busybox:latest sh 7 seconds ago Created busybox
Gerar um arquivo de unidade do sistema para o contêiner
busybox
:# podman generate systemd --new --files --name busybox /root/container-busybox.service
Exibir o conteúdo do arquivo da unidade gerada
container-busybox.service
systemd:# vim container-busybox.services # container-busybox.service # autogenerated by Podman 2.0.0-rc7 # Mon Jul 27 11:06:32 CEST 2020 [Unit] Description=Podman container-busybox.service Documentation=man:podman-generate-systemd(1) Wants=network.target After=network-online.target [Service] Environment=PODMAN_SYSTEMD_UNIT=%n Restart=on-failure ExecStartPre=/usr/bin/rm -f %t/container-busybox.pid %t/container-busybox.ctr-id ExecStart=/usr/bin/podman run --conmon-pidfile %t/container-busybox.pid --cidfile %t/container-busybox.ctr-id --cgroups=no-conmon -d --replace --name busybox busybox:latest ExecStop=/usr/bin/podman stop --ignore --cidfile %t/container-busybox.ctr-id -t 10 ExecStopPost=/usr/bin/podman rm --ignore -f --cidfile %t/container-busybox.ctr-id PIDFile=%t/container-busybox.pid KillMode=none Type=forking [Install] WantedBy=multi-user.target default.target
Observe que os arquivos de unidade gerados usando a opção
--new
não esperam que os recipientes e as cápsulas existam. Portanto, eles executam o comandopodman run
ao iniciar o serviço (veja a linhaExecStart
) em vez do comandopodman start
. Por exemplo, veja a seção 7.2. Gerando um arquivo de unidade systemd usando Podman.O comando
podman run
usa as seguintes opções de linha de comando:-
A opção
--conmon-pidfile
aponta para um caminho para armazenar a identificação do processo para o processoconmon
em execução no host. O processoconmon
termina com o mesmo status de saída do contêiner, o que permite que o sistema informe o status correto do serviço e reinicie o contêiner, se necessário. -
A opção
--cidfile
aponta para o caminho que armazena a identificação do contêiner. -
O
%t
é o caminho para a raiz do diretório de tempo de execução, por exemplo/run/user/$UserID
. -
O
%n
é o nome completo do serviço.
-
A opção
Copie os arquivos da unidade para
/usr/lib/systemd/system
para instalá-los como usuário root:# cp -Z container-busybox.service /usr/lib/systemd/system Created symlink /etc/systemd/system/multi-user.target.wants/container-busybox.service /usr/lib/systemd/system/container-busybox.service. Created symlink /etc/systemd/system/default.target.wants/container-busybox.service → /usr/lib/systemd/system/container-busybox.service.
Recursos adicionais
- Melhoria da integração do sistema com o artigoPodman 2.0 de Valentin Rothberg e Dan Walsh.
- Para saber mais sobre a configuração de serviços com o systemd, consulte o capítulo Configurando configurações básicas do sistema chamado Gerenciando serviços com o systemd.