Red Hat Training

A Red Hat training course is available for RHEL 8

6.2. Funcionamento de contêineres com runlabels

Algumas imagens da Red Hat incluem etiquetas que fornecem linhas de comando pré-definidas para trabalhar com essas imagens. Usando o comando podman container runlabel <label>, você pode dizer a podman para executar o comando definido naquele <label> para a imagem. As runlabels existentes incluem:

  • install: Configura o sistema hospedeiro antes de executar a imagem. Normalmente, isto resulta na criação de arquivos e diretórios no host que o container pode acessar quando for executado mais tarde.
  • run: Identifica as opções de linha de comando podman a serem usadas ao executar o contêiner. Tipicamente, as opções abrem privilégios no host e montam o conteúdo do host que o container precisa para permanecer permanentemente no host.
  • uninstall: Limpa o sistema hospedeiro depois que você terminar de operar o contêiner.

As imagens da Red Hat que têm um ou mais runlabels incluem as imagens rsyslog e support-tools. O procedimento a seguir ilustra como usar essas imagens.

6.2.1. Rodando rsyslog com runlabels

A imagem do contêiner rhel8/rsyslog é feita para executar uma versão em contêiner do daemon rsyslogd. Dentro da imagem rsyslog estão install, run e uninstall runlabels. Os seguintes passos de procedimento são realizados através da instalação, execução e desinstalação da imagem rsyslog:

Procedimento

  1. Puxe a imagem rsyslog:

    # podman pull registry.redhat.io/rhel8/rsyslog
  2. Exibir (mas ainda não rodar) o runlabel install para rsyslog:

    # podman container runlabel install --display rhel8/rsyslog
    command: podman run --rm --privileged -v /:/host -e HOST=/host -e IMAGE=registry.redhat.io/rhel8/rsyslog:latest -e NAME=rsyslog registry.redhat.io/rhel8/rsyslog:latest /bin/install.sh

    Isto mostra que o comando abrirá privilégios para o host, montará o sistema de arquivos raiz do host em /host no container, e executará um script install.sh.

  3. Execute o runlabel install para rsyslog:

    # podman container runlabel install rhel8/rsyslog
    command: podman run --rm --privileged -v /:/host -e HOST=/host -e IMAGE=registry.redhat.io/rhel8/rsyslog:latest -e NAME=rsyslog registry.redhat.io/rhel8/rsyslog:latest /bin/install.sh
    Creating directory at /host//etc/pki/rsyslog
    Creating directory at /host//etc/rsyslog.d
    Installing file at /host//etc/rsyslog.conf
    Installing file at /host//etc/sysconfig/rsyslog
    Installing file at /host//etc/logrotate.d/syslog

    Isto cria arquivos no sistema hospedeiro que a imagem rsyslog utilizará mais tarde.

  4. Mostrar o runlabel run para rsyslog:

    # podman container runlabel run --display rhel8/rsyslog
    command: podman run -d --privileged --name rsyslog --net=host --pid=host -v /etc/pki/rsyslog:/etc/pki/rsyslog -v /etc/rsyslog.conf:/etc/rsyslog.conf -v /etc/sysconfig/rsyslog:/etc/sysconfig/rsyslog -v /etc/rsyslog.d:/etc/rsyslog.d -v /var/log:/var/log -v /var/lib/rsyslog:/var/lib/rsyslog -v /run:/run -v /etc/machine-id:/etc/machine-id -v /etc/localtime:/etc/localtime -e IMAGE=registry.redhat.io/rhel8/rsyslog:latest -e NAME=rsyslog --restart=always registry.redhat.io/rhel8/rsyslog:latest /bin/rsyslog.sh

    Isto mostra que o comando abre privilégios para o host e monta arquivos e diretórios específicos do host dentro do container, quando lança o container rsyslog para rodar o daemon rsyslogd.

  5. Execute o runlabel run para rsyslog:

    # podman container runlabel run rhel8/rsyslog
    command: podman run -d --privileged --name rsyslog --net=host --pid=host -v /etc/pki/rsyslog:/etc/pki/rsyslog -v /etc/rsyslog.conf:/etc/rsyslog.conf -v /etc/sysconfig/rsyslog:/etc/sysconfig/rsyslog -v /etc/rsyslog.d:/etc/rsyslog.d -v /var/log:/var/log -v /var/lib/rsyslog:/var/lib/rsyslog -v /run:/run -v /etc/machine-id:/etc/machine-id -v /etc/localtime:/etc/localtime -e IMAGE=registry.redhat.io/rhel8/rsyslog:latest -e NAME=rsyslog --restart=always registry.redhat.io/rhel8/rsyslog:latest /bin/rsyslog.sh
    28a0d719ff179adcea81eb63cc90fcd09f1755d5edb121399068a4ea59bd0f53

    O recipiente rsyslog abre privilégios, monta o que precisa do anfitrião e executa o daemon rsyslogd em segundo plano (-d). O daemon rsyslogd começa a reunir mensagens de registro e direciona as mensagens para arquivos no diretório /var/log.

  6. Mostrar o runlabel uninstall para rsyslog:

    # podman container runlabel uninstall --display rhel8/rsyslog
    command: podman run --rm --privileged -v /:/host -e HOST=/host -e IMAGE=registry.redhat.io/rhel8/rsyslog:latest -e NAME=rsyslog registry.redhat.io/rhel8/rsyslog:latest /bin/uninstall.sh
  7. Execute o runlabel uninstall para rsyslog:

    # podman container runlabel uninstall rhel8/rsyslog
    command: podman run --rm --privileged -v /:/host -e HOST=/host -e IMAGE=registry.redhat.io/rhel8/rsyslog:latest -e NAME=rsyslog registry.redhat.io/rhel8/rsyslog:latest /bin/uninstall.sh

    Neste caso, o script uninstall.sh apenas remove o arquivo /etc/logrotate.d/syslog. Note que ele não limpa os arquivos de configuração.