Observação:
- Este tutorial está disponível em um ambiente de laboratório gratuito fornecido pela Oracle.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Usar Compor Arquivos com o Podman no Oracle Linux
Introdução
Podman e Docker Compose são ferramentas de linha de comando que usam um arquivo YAML especialmente formatado como entrada para montar e, em seguida, executar contêineres únicos ou múltiplos como aplicativos. Essas ferramentas permitem que os desenvolvedores desenvolvam, testem e, em seguida, forneçam a seus usuários um único arquivo YAML para seu aplicativo e usem apenas um comando para iniciá-lo e interrompê-lo de forma confiável. Essa portabilidade e confiabilidade tornaram o uso da especificação Compose extremamente popular entre usuários e desenvolvedores, e está se tornando cada vez mais um requisito.
Objetivos
Neste tutorial, você aprenderá a:
- Instalar e usar
podman-compose
edocker-compose
com o Podman - Verifique se eles funcionam com um arquivo
docker-compose.yaml
simples
Pré-requisitos
-
Mínimo de um único sistema Oracle Linux
-
Cada sistema deve ter o Oracle Linux instalado e configurado com:
- Uma conta de usuário não raiz com acesso sudo (sudo)
- Acesso à Internet
Implantar o Oracle Linux
Observação: Se estiver em execução na sua própria tenancy, leia o projeto linux-virt-labs
GitHub README.md e conclua os pré-requisitos antes de implantar o ambiente de laboratório.
-
Abra um terminal no Luna Desktop.
-
Clone o projeto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Altere para o diretório de trabalho.
cd linux-virt-labs/ol
-
Instale as coleções necessárias.
ansible-galaxy collection install -r requirements.yml
-
Implante o ambiente de laboratório.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e update_all=true
O ambiente de laboratório gratuito requer a variável extra
local_python_interpreter
, que defineansible_python_interpreter
para reproduções em execução no localhost. Essa variável é necessária porque o ambiente instala o pacote RPM do Oracle Cloud Infrastructure SDK para Python, localizado nos módulos python3.6.A forma de implantação padrão usa a CPU AMD e o Oracle Linux 8. Para usar uma CPU Intel ou um Oracle Linux 9, adicione
-e instance_shape="VM.Standard3.Flex"
ou-e os_version="9"
ao comando de implantação.Importante: Aguarde a execução bem-sucedida do playbook e atinja a tarefa de pausa. Neste estágio do playbook, a instalação do Oracle Linux está concluída e as instâncias estão prontas. Anote o jogo anterior, que imprime os endereços IP públicos e privados dos nós que ele implanta e quaisquer outras informações de implantação necessárias durante a execução do laboratório.
Configurar o Podman para Trabalhar com Compor Arquivos
O Podman introduziu o suporte para a funcionalidade Docker Compose no Podman v3.2.0, após a introdução do suporte limitado no Podman v3.0.0, introduzindo assim a capacidade de usar o Docker Compose no Podman. Mais recentemente, o Podman v4.1.0 estendeu o suporte à funcionalidade do Docker Compose para incluir o uso do Docker Compose v2.2 e versões mais recentes.
Instalar o Pacote do Podman Docker
Instale o pacote podman-docker
, que permite ao Podman trabalhar nativamente com comandos do Docker.
sudo dnf install -y podman-docker
Instalar o Docker Compose
-
Baixe e instale o Compose standalone.
sudo curl -SL https://github.com/docker/compose/releases/download/v2.28.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
Exemplo de Saída:
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 60.1M 100 60.1M 0 0 103M 0 --:--:-- --:--:-- --:--:-- 378M
-
Aplique permissões executáveis ao binário.
sudo chmod +x /usr/local/bin/docker-compose
-
Confirmar Composição de trabalhos independentes.
docker-compose version
A saída retorna a versão atual do
docker-compose
.Observação: Instalar Composição de maneira independente conforme descrito aqui requer o uso de
docker-compose up
, por exemplo, em vez da sintaxe padrãodocker-compose up
usada ao executar o utilitário Docker.
Iniciar o Soquete Podman
O Podman e o Docker Compose exigem o início do soquete Podman, que permite que as chamadas do sistema de cada programa se comuniquem com o Podman por meio desse processo controlado por systemd.
-
Configure o soquete do Podman.
systemctl --user enable --now podman.socket systemctl --user status podman.socket
A saída mostra o soquete systemd
active (listening)
. -
Obtenha o local do soquete do Podman do usuário.
podman info | grep -i remotesocket -A2
-
Verifique se o soquete funciona usando cURL.
curl -w "\n" -H "Content-Type: application/json" --unix-socket /run/user/$UID/podman/podman.sock http://localhost/_ping
O caminho para o
--unix-socket
corresponde ao caminho fornecido dopodman info
. A saída desse comando deve retornarOK
, indicando uma configuração bem-sucedida da funcionalidade Redigir que está pronta para trabalhar com arquivos docker-compose.yaml.
Instalar o Podman Compose
O Podman Compose é uma biblioteca Python 3 que implementa a Especificação de Redação para ser executada com o Podman.
-
Instale e ative o repositório developer_EPEL.
Oracle Linux 8:
sudo dnf install -y oracle-epel-release-el8 sudo dnf config-manager --enable ol8_developer_EPEL
Oracle Linux 9:
sudo dnf install -y oracle-epel-release-el9 sudo dnf config-manager --enable ol9_developer_EPEL
Oracle Linux 10:
sudo dnf install -y oracle-epel-release-el10 sudo dnf config-manager --enable ol10_u0_developer_EPEL
-
Instale o pacote Podman Compose.
sudo dnf install -y podman-compose
-
Confirmar Podman Compose funciona exibindo sua versão.
podman-compose version
Criar um arquivo de composição
Esse arquivo Compose permite a extração e o início do aplicativo designado.
-
Crie um diretório para o teste e mude para esse diretório.
mkdir -p projects/echo cd projects/echo
-
Crie o arquivo Compose.
cat >> compose.yaml << EOF services: web: image: k8s.gcr.io/echoserver:1.4 ports: - "${HOST_PORT:-8080}:8080" EOF
-
Revise o arquivo Compose.
cat compose.yaml
Executar Edição do Podman
-
Mude para o mesmo diretório que o arquivo Compose.
Importante: os comandos
podman-compose
não funcionarão, a menos que você esteja no mesmo diretório do arquivocompose.yaml
.cd ~/projects/echo/
-
Inicie o aplicativo
echoserver
.podman-compose up -d
A saída mostra o Podman puxando o contêiner e iniciando-o com os parâmetros listados no arquivo Compose. A opção
-d
diz ao Podman para executar o contêiner em segundo plano no modo desanexado. O Podman só extrairá imagens referenciadas no arquivo Compose se elas não estiverem presentes localmente. -
Teste se o aplicativo echoserver está ativo e em execução.
curl -X POST -d "foobar" http://localhost:8080/; echo
Exemplo de Saída:
CLIENT VALUES: client_address=10.89.0.2 command=POST real path=/ query=nil request_version=1.1 request_uri=http://localhost:8080/ SERVER VALUES: server_version=nginx: 1.10.0 - lua: 10001 HEADERS RECEIVED: accept=*/* content-length=6 content-type=application/x-www-form-urlencoded host=localhost:8080 user-agent=curl/7.61.1 BODY: foobar
-
Além disso, confirme o sucesso revisando os logs.
podman-compose logs
Exemplo de Saída:
``texto ['podman', '–version', ''] usando podman versão: 4.2.0 podman logs echo_web_1 10.89.0.2 - - [17/Jan/2023:12:46:47 +0000] "POST / HTTP/1.1" 200 446 "-" "curl/7.61.1" código de saída: 0
-
Use o utilitário Podman Compose para ver contêineres em execução.
podman-compose ps
Exemplo de Saída:
['podman', '--version', ''] using podman version: 4.2.0 podman ps -a --filter label=io.podman.compose.project=echo CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f4053947c8c1 k8s.gcr.io/echoserver:1.4 nginx -g daemon o... 2 minutes ago Up 2 minutes ago 0.0.0.0:8080->8080/tcp echo_web_1 exit code: 0
Você pode ver outros comandos do utilitário Podman Compose executando
podman-compose --help
. -
Agora, é hora de interromper o contêiner echoserver.
podman-compose down
-
Remova a rede de ponte do Podman adicional criada durante a implantação do contêiner.
podman network rm echo_default
Confirmar se o Docker Compose está funcionando
-
Defina a variável de ambiente para a localização do soquete Podman.
export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock
-
Inicie o aplicativo echoserver.
Este comando deve ser executado de dentro do mesmo diretório que o arquivo Compose.
docker-compose up -d
A saída mostra a criação da rede echo_default e do contêiner echo-web-1.
-
Acesse o aplicativo do contêiner.
curl -X POST -d "foobar" http://localhost:8080/; echo
Exemplo de Saída:
[oracle@ol-server ~]$ curl -X POST -d "foobar" http://localhost:8080/; echo CLIENT VALUES: client_address=10.89.0.2 command=POST real path=/ query=nil request_version=1.1 request_uri=http://localhost:8080/ SERVER VALUES: server_version=nginx: 1.10.0 - lua: 10001 HEADERS RECEIVED: accept=*/* content-length=6 content-type=application/x-www-form-urlencoded host=localhost:8080 user-agent=curl/7.61.1 BODY: foobar
-
Inspecione os logs e confirme se este aplicativo enviou uma solicitação de devolução com sucesso.
docker-compose logs
Exemplo de Saída:
``texto echo-web-1 | 10.89.0.1 - - [17/Jan/2023:14:48:56 +0000] "POST / HTTP/1.1" 200 446 "-" curl/7.61"
-
Obtenha uma listagem de contêineres iniciada usando o utilitário Docker Compose.
docker-compose ps
Exemplo de Saída:
echo-web-1 k8s.gcr.io/echoserver:1.4 "nginx -g daemon off;" web 12 minutes ago Up 12 minutes 8080/tcp
-
Interrompa o aplicativo echoserver.
docker-compose down
Informações Importantes
Se você instalar os executáveis podman-compose
e docker-compose
no mesmo sistema, será essencial observar que não é possível chamá-los de forma intercambiável. O que queremos dizer com essa instrução é que, se você iniciar um processo usando podman-compose
, não poderá consultá-lo ou interrompê-lo usando docker-compose
ou vice-versa.
-
Comece usando o Podman Compose.
podman-compose up -d
-
Tente listar os contêineres em execução usando o Docker Compose.
docker-compose ps
A saída retorna uma lista vazia mostrando que, de sua perspectiva, nenhum contêiner está em execução.
-
No entanto, o uso do Podman Compose confirma que o contêiner está em execução.
podman-compose ps
Exemplo de Saída:
['podman', '--version', ''] using podman version: 4.2.0 podman ps -a --filter label=io.podman.compose.project=echo CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 55335e797296 k8s.gcr.io/echoserver:1.4 nginx -g daemon o... 4 minutes ago Up 4 minutes ago 0.0.0.0:8080->8080/tcp echo_web_1 exit code: 0
Próximas Etapas
Isso confirma como usar um arquivo Compose com o Podman usando podman-compose
ou docker-compose
.
Links Relacionados
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal do Oracle Learning YouTube. Além disso, acesse education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Use Compose Files with Podman on Oracle Linux
F76756-02