Red Hat Training

A Red Hat training course is available for RHEL 8

2.5. Usando as imagens init da UBI

Este procedimento mostra como construir um container usando um Dockerfile que instala e configura um servidor Web (httpd) para iniciar automaticamente pelo serviço systemd (/sbin/init) quando o container é executado em um sistema host.

Procedimento

  1. Crie um Dockerfile com o seguinte conteúdo para um novo diretório:

    FROM registry.access.redhat.com/ubi8/ubi-init
    RUN yum -y install httpd; yum clean all; systemctl enable httpd;
    RUN echo "Successful Web Server Test" > /var/www/html/index.html
    RUN mkdir /etc/systemd/system/httpd.service.d/; echo -e '[Service]\nRestart=always' > /etc/systemd/system/httpd.service.d/httpd.conf
    EXPOSE 80
    CMD [ "/sbin/init" ]

    O Dockerfile instala o pacote httpd, permite que o serviço httpd comece no momento da inicialização, cria um arquivo de teste (index.html), expõe o servidor Web ao host (porta 80) e inicia o serviço de inicialização do sistema (/sbin/init) quando o container começa.

  2. Construa o recipiente:

    # podman build --format=docker -t mysysd .
  3. Opcionalmente, se você quiser executar containers com systemd e SELinux está habilitado em seu sistema, você deve definir a variável booleana container_manage_cgroup:

    # Setsebool -P container_manage_cgroup 1
  4. Execute o recipiente com o nome mysysd_run:

    # podman run -d --name=mysd_run -p 80:80 mysysd

    A imagem mysysd funciona como o contêiner mysysd_run como um processo daemon, com o porto 80 do contêiner exposto ao porto 80 no sistema hospedeiro.

  5. Verifique se o contêiner está funcionando:

    # podman ps
    a282b0c2ad3d  localhost/mysysd:latest  /sbin/init  15 seconds ago  Up 14 seconds ago  0.0.0.0:80->80/tcp  mysysd_run
  6. Teste o servidor web:

    # curl localhost/index.html
    Successful Web Server Test