Como lançar contêineres com composição do docker

Como lançar contêineres com composição do docker

Este artigo vai introduzir o Docker compor e mostrar como colocá -lo para funcionar para suas necessidades. Vamos instalá -lo, escrever um arquivo de composição simples e iniciar o contêiner.

Veremos então como lançar vários contêineres. Em seguida, veremos como criar imagens e ultimamente como usar vários arquivos de composição para lançar contêineres em diferentes ambientes, como desenvolvimento e produção, por exemplo.

Neste tutorial, você aprenderá:

  • Como instalar o docker compor
  • Como escrever um arquivo de composição simples
  • Como executar comandos do Docker-Compõe para iniciar e interromper os contêineres
  • Como lançar vários contêineres
  • Como construir imagens com composição do docker
  • Como substituir usando vários arquivos de composição do docker
Phpmyadmin.

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Ubuntu 18.04
Programas Docker compor
Outro Acesso privilegiado ao seu sistema Linux como raiz ou através do sudo comando.
Convenções # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Introdução



Até agora vimos como o Docker é ótimo para gerenciar imagens e iniciar recipientes. Mas frequentemente as aplicações exigem que diferentes contêineres estejam em alta e se comunicando entre si. Conectando -os através da rede, fazendo com que eles compartilhem volumes de disco e passando as variáveis ​​de ambiente pode facilmente se transformar em uma sequência de comandos difíceis de documentar e manter com o tempo. Lá entra no Docker compor. Vamos começar a instalá -lo e depois escrever o arquivo de composição.

Instalando o docker compor

No Ubuntu 18.04 Instalando o Docker Composer é direto:

# APT Install Docker-Compose 

Para testá -lo está instalado, você pode verificar sua versão:

$ Docker-Comppose -v Docker-CompomPese Versão 1.17.1, construa desconhecida 

Docker Engine e Docker Compose Versões são importantes, pois seus lançamentos são frequentes e os recursos são adicionados e removidos. A versão mostrada acima (1.17.1) foi lançado em novembro de 2017. Se você precisar de um lançamento mais recente, poderá ativar o repositório universo do Ubuntu e obter um pacote mais recente, ou até baixar e instalar o lançamento mais recente diretamente no site do Docker Compose:

# curl -l "https: // github.com/docker/compor/liberações/download/1.23.2/Docker-Compose-$ (uname -s)-$ (uname -m) "-o/usr/local/bin/Docker-Compose # sudo chmod +x/usr/local/bin/Docker-Compose 


O arquivo de composição do docker

O Docker Compõe lê um arquivo YAML, que geralmente é nomeado Docker-Compose.yml.

Versão: "3" Serviços: Apache: Imagem: Php: 7.3 -Apache Container_name: 'Apache' Portas: - Volumes "80:80": - ./www:/var/www/html 
cópia de

No começo, a versão de sintaxe é informada como 3. Em seguida, na seção de serviços, apenas um contêiner é especificado (Apache) e as tags imagem, container_name, portas, e volumes são usados ​​para descrever como deve ser executado.

Agora crie um diretório nomeado www e solte isso índice.html arquivo dentro.

  Olá   

Em seguida, para testar o PHP está funcionando, basta soltar este arquivo dentro www.

 


Docker Compõe comandos

O acima O comando cuidará de tudo: faça o download das imagens do Docker Hub se ainda não existirem no cache local, crie imagens personalizadas (o que não é o caso; abordaremos essa próxima seção) e iniciará os contêineres.

$ Docker -Compõe Up -d 

O -d Switch Instrui o docker compor para executar contêineres em segundo plano. Caso outro nome de arquivo seja usado, em vez de Docker-Compose.yml, pode ser informado com -f.

Observe que o comando de lançamento é muito mais simples do que é Docker Execute contraparte. Ele tem mais duas vantagens: não muda independentemente do conteúdo do arquivo de composição e, se o arquivo de composição especificar mais de um contêiner, todos eles serão iniciados. Apenas para comparação, o comando do Docker Run seria:

$ docker run -d - -name = 'apache -alone' -p 80:80 -v $ pwd/www:/var/www/html php: 7.3-Apache 

Porque a sintaxe do arquivo de composição é YAML, o indentamento é importante. Se você receber erros de sintaxe, verifique a sintaxe da YAML com um analisador online, como este.

Você pode verificar se o contêiner está funcionando.

$ Docker PS Comando de ID de contêiner de contêineres criados portas de status nomes 3937d997e029 php: 7.3-Apache "Docker-php-entrypoi…" 8 minutos atrás, 8 minutos 0.0.0.0: 80-> 80/TCP Apache 

Agora acesso http: // localhost no seu navegador preferido e depois http: // localhost/phpinfo.php.



Iniciando vários contêineres

Vamos agora ver um arquivo de composição mais complexo. Vamos imaginar que vamos configurar um ambiente local para desenvolver um aplicativo de lâmpada. Precisamos de um recipiente com Apache e PHP, outro contêiner com MySQL e, possivelmente. O Docker-Compose.yml vai ser:

Versão: "3" Serviços: Apache: Imagem: Php: 7.3 -Apache Container_name: 'Apache' Reiniciar: 'sempre' portas: - "80:80" - "443: 443" Volumes: - ./www:/var/www/html - ./php/php.ini:/usr/local/etc/php/php.ini - ./sites-ativados:/etc/apache2/sites-habilitados-Apache-Logs:/var/log/apache2 mysql: imagem: mariadb: 10.4 Container_name: 'MySQL' Reiniciar: 'sempre' Volumes: - MySQL -Data:/var/lib/mysql ambiente: mysql_root_password: alguma palavra de palavra mysql_database: db_site mysql_user: userMinMpDord: seta.8 Container_name: 'phpmyadmin' ambiente: pma_host: mysql pma_port: 3306 portas:-'8080: 80' Volumes: Apache-Logs: mysql-data: 
cópia de

Este arquivo de composição está lançando três contêineres, cada um tem uma seção em Serviços. Observe que estamos definindo algumas variáveis ​​de ambiente em ambiente. O Reinicie: sempre A definição está instruindo o Docker a iniciar os contêineres automaticamente quando o serviço do Docker é iniciado (no caso de uma reinicialização, por exemplo).

O comando para iniciar os três contêineres é o mesmo que no exemplo simples anterior. Fácil de lembrar, certo?

$ Docker -Compõe Up -d 

Verifique se os contêineres são criados.



$ Docker PS Comando de ID de contêiner de contêineres criados portas de status nomes f76ece3508fe phpmyadmin/phpmyadmin: 4.8 "/Run.SH SUPERVISORD ... "20 segundos atrás de 4 segundos 9000/TCP, 0.0.0.0: 8080-> 80/tcp phpmyadmin 69b1b5054f3d mariadb: 10.4 "Docker-Entrypoint.s… "20 segundos atrás de 6 segundos 3306/tcp mysql 6747d7580dac php: 7.3-Apache "Docker-php-entrypoi…" 2 dias atrás, até 14 segundos 0.0.0.0: 80-> 80/tcp, 0.0.0.0: 443-> 443/tcp apache 
cópia de

É interessante notar que os contêineres podem se comunicar através de seus nomes e acessar as portas uns dos outros sem a necessidade de expor suas portas ao host. Por exemplo, não expômos a porta 3306 do serviço MySQL (como pode ser visto na saída acima), mas o phpmyadmin é capaz de acessar esta porta. Para acessar Phpmyadmin, vá para http: // localhost: 8080 e faça login com o usuário e a senha definidos no serviço MySQL (usuário / senha).

Construindo imagens com Docker compor

Se você precisar construir uma imagem, em vez de usar uma existente, basta adicionar um construir marcação. No exemplo abaixo, estamos dizendo ao Docker Compose para analisar o diretório atual para um Dockerfile. A tag de imagem será usada para nomear a nova imagem.

Versão: Serviços "3": Apache: Build: . Imagem: My-Image-Name Container_Name: 'Apache' Reiniciar: 'sempre' portas:-"80:80" 
cópia de

Substituir usando vários arquivos de composição do docker

Docker Compose facilita a personalização do lançamento de contêineres para diferentes ambientes. Você só precisa criar os arquivos de substituição chamada e iniciar os contêineres especificando -os. Eles substituirão as definições anteriores feitas no arquivo de composição base.

Por exemplo, vamos criar um arquivo de substituição nomeado Docker-compose-Prod.yml e definir uma senha diferente para MySQL.

Versão: Serviços "3": mysql: ambiente: mysql_root_password: somepassword_other mysql_database: db_site_other mysql_user: user_other mysql_password: senha_other 
cópia de

Você pode usar outro host para iniciar os contêineres. Se você estiver usando o mesmo host, é necessário excluir o contêiner MySQL e o volume associado. Caso contrário, o contêiner existente com as credenciais antigas será usado.

$ docker pare mysql $ docker rm mysql $ docker volume ls $ docker volume rm diretório_mysql-data 

E então você pode executar o comando abaixo. É importante manter a ordem dos arquivos. Vários arquivos podem ser usados. Em nosso exemplo, apenas o ambiente Seção de mysql O serviço será substituído.

$ docker-compospose -f Docker-CompomPese.YML -F Docker-Compompose-Prod.yml up -d 

Depois de verificar os contêineres, tente acessar phpmyadmin usando as novas credenciais.

Conclusão

Este artigo introduziu o Docker Compose, uma ferramenta útil para orquestrar o lançamento de vários contêineres no mesmo host. Existem muitas possibilidades e a leitura do Manual de Composição do Docker é altamente recomendável. Nos próximos artigos, vamos explorar maneiras de orquestrar os contêineres do Docker entre vários hosts.

Mais nesta série de artigos do docker

  • Uma introdução prática aos recipientes do Docker
  • Como interagir com os contêineres do Docker
  • Como personalizar imagens do Docker com Dockerfiles

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Como criar uma pilha de lâmpadas à base de docker usando o docker em…
  • Mastering Bash Script Loops
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Coisas para instalar no Ubuntu 22.04
  • Como instalar Debian em um contêiner Luks existente
  • Como instalar e configurar o Ghost CMS no Ubuntu
  • Tutorial de depuração do GDB para iniciantes