The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

Usando o Podman com o Quarkus

Podman é um mecanismo de contêiner sem daemon e sem root para desenvolver, gerenciar e executar contêineres OCI no seu sistema Linux ou em outro sistema operacional. Se você estiver usando o Podman com o Quarkus, será necessária uma configuração única, mas, uma vez concluída, você poderá aproveitar todos os recursos do Quarkus.

Instalando o Podman

macOS

Contêineres são realmente Linux. Dessa forma, os contêineres do Linux não podem ser executados nativamente no macOS ou no Windows. Portanto, os contêineres devem ser executados em uma máquina virtual (VM) Linux, e um cliente Podman interage com essa VM. Um subsistema de hipervisor nativo e um software de virtualização são usados para executar a VM do Linux no sistema operacional e, em seguida, os contêineres são executados nessa VM. No Podman, isso é conhecido como máquina Podman e está integrado à ferramenta.

usuários do macOS podem instalar o Podman por meio do Homebrew. Depois de configurar brew , você pode usar o comando brew install para instalar o Podman e docker-compose:

brew install podman
brew install docker-compose
podman machine init -v $HOME:$HOME
PODMAN_VERSION=`podman -v | sed 's/[a-zA-Z ]*//'`
sudo /opt/homebrew/Cellar/podman/$PODMAN_VERSION/bin/podman-mac-helper install
podman machine set --rootful
podman machine start
alias docker='podman'

Se você estiver utilizando o Podman 4.1 ou superior, não precisa montar o volume -v $HOME:$HOME.

Se você estiver utilizando o Mac M1, é necessário um passo adicional para fazer as imagens AMD64 funcionarem:

podman machine ssh
sudo -i
rpm-ostree install qemu-user-static
systemctl reboot

Assim que a máquina virtual reiniciar, você deverá estar pronto para executar os dev services.

Para mais informações, consultar

Windows

Consulte o guia do Podman para Windows para obter instruções de configuração e utilização.

Antes de iniciar a máquina Podman, configure-a para preferir a execução de contêineres com root:

podman machine set --rootful

Esta ação só precisa ser executada uma vez.

Linux

O pacote Podman está disponível em várias distribuições Linux. Na maioria dos casos, o Podman pode ser usado como substituto do Docker, seja com o pacote podman-docker ou usando um alias ( alias docker=podman ). Para instalá-lo em seu sistema operacional Linux, consulte o guia de instalação do Podman .

Definindo o DOCKER_HOST no Linux

O Podman oferece suporte a dois modos de operação: rootful, em que o contêiner é executado como root no sistema hospedeiro, e rootless, em que o contêiner é executado em uma conta de usuário padrão do Unix. No Linux, o soquete Unix da API REST é, por padrão, restrito para permitir que apenas o usuário root o acesse. Isso impede que alguém use um contêiner para obter um escalada de privilégio no sistema. Embora essas restrições possam ser atenuadas para permitir um grupo especial em vez de apenas o usuário root, a abordagem recomendada é usar o Podman sem root no Linux. Para usar o Podman sem root, é necessário definir uma variável de ambiente DOCKER_HOST para apontar para o soquete específico do usuário.

Em ambos os casos, é necessário iniciar a API REST ativando o serviço de soquete Podman através do systemd, ou pelo menos certificando-se de que o Podman está executando como um serviço.
# Example 1: Enable the podman socket with Docker REST API with systemd (only needs to be done once)
systemctl --user enable podman.socket --now
# Example 2: Enable the podman socket with Docker REST API on a system where systemd is not running (WSL etc)
podman system service --time=0

Em seguida, você pode obter o caminho do soquete com o seguinte comando:

$ podman info | grep -A2 'remoteSocket'

remoteSocket:
  exists: true
  path: /path/to/podman.sock

A definição da variável de ambiente DOCKER_HOST deve ser efetuada sempre ou adicionada ao perfil:

export DOCKER_HOST=unix:///path/to/podman.sock (1)
1 Substitua /path/to/podman.sock pelo caminho que obteve anteriormente.

Para uma explicação mais detalhada, consulte este artigo do blog.

Após a instalação

Privilégios dos Testcontainers

Edite ~/.testcontainers.properties e adicione a seguinte linha

ryuk.container.privileged=true

Alternativamente, você pode desativar o ryuk:

export TESTCONTAINERS_RYUK_DISABLED=true #not recommended - see above!

Isso tem a desvantagem de desativar a limpeza de contêineres , de modo que você pode encontrar contêineres obsoletos por aí. Isso pode ser um problema se você estiver executando testes automatizados.

Nomes curtos de imagens

O Testcontainers e o Quarkus Dev Services também esperam que o serviço de contêiner ao qual fazem solicitações seja não interativo. Caso tenha vários registros configurados na sua configuração do Docker ou do Podman, e ao usar nomes de imagem curtos, o Podman responde com um prompt perguntando qual registro deve ser usado para extrair imagens.

Embora recomendemos que você evite nomes curtos e sempre use nomes totalmente especificados, inclusive no registro, o Testcontainers infelizmente depende de nomes curtos internamente por enquanto. Se estiver usando o Testcontainers, seja diretamente ou por meio do Dev Services, você precisará desativar esse prompt definindo a propriedade de configuração short-name-mode="disabled" do Podman em /etc/containers/registries.conf.

Conteúdo Relacionado