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

  1. Puxe a imagem que você deseja usar em seu sistema. Por exemplo, para puxar a imagem busybox:

    # podman pull busybox:latest
    Copy to Clipboard Toggle word wrap
  2. 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
    Copy to Clipboard Toggle word wrap
  3. Crie o recipiente busybox:

    # podman create --name busybox busybox:latest
    1e12cf95e305435c0001fa7d4a14cf1d52f737c1118328937028c0bd2fdec5ca
    Copy to Clipboard Toggle word wrap
  4. 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
    Copy to Clipboard Toggle word wrap
  5. Gerar um arquivo de unidade do sistema para o contêiner busybox:

    # podman generate systemd --new --files --name busybox
    /root/container-busybox.service
    Copy to Clipboard Toggle word wrap
  6. 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
    Copy to Clipboard Toggle word wrap

    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 comando podman run ao iniciar o serviço (veja a linha ExecStart ) em vez do comando podman 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 processo conmon em execução no host. O processo conmon 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.
  7. 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.
    Copy to Clipboard Toggle word wrap

Recursos adicionais

Voltar ao topo
Red Hat logoGithubredditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar. Explore nossas atualizações recentes.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja o Blog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

Theme

© 2025 Red Hat