docker-compose
O projeto Docker-Compose é um projeto oficial de código aberto do Docker, responsável pela organização rápida de clusters de contêineres do Docker
Ao escrever arquivos docker-compose, vários serviços podem ser iniciados/interrompidos/atualizados ao mesmo tempo (as dependências podem ser definidas e os serviços podem ser iniciados em ordem)
docker-compose divide os contêineres gerenciados em três camadas:
projeto | 1 | um projeto de microsserviço |
serviço | N | Consiste em N microsserviços |
recipiente | N | E cada microsserviço é composto por N nós |
docker-compose.yml forma um projeto, que inclui vários serviços, e cada serviço define a imagem (ou imagem de compilação) do contêiner em execução
O arquivo de configuração de projeto padrão do Docker-Compose é docker-compose.yml
Quando usamos o Docker anteriormente, definimos o arquivo Dockerfile e, em seguida, usamos comandos como docker build e docker run para operar o contêiner. No entanto, o sistema de aplicativos da arquitetura de microsserviço geralmente inclui vários microsserviços e cada microsserviço geralmente implanta várias instâncias. Cada microsserviço deve ser iniciado e interrompido manualmente,
Então, a eficiência é baixa e a quantidade de manutenção é enorme. O uso do Docker Compose pode gerenciar contêineres de maneira fácil e eficiente. É uma ferramenta de aplicativo para definir e executar o Docker de vários contêineres.
Processo de três etapas:
1) Defina o ambiente do aplicativo com um dockerfile, ou uma imagem espelhada, para que possa ser copiado para qualquer lugar.
2) Defina os serviços que compõem o aplicativo em docker-compose.yml para que possam ser executados juntos em ambientes separados.
3) Execute o docker compose para iniciar e executar todo o aplicativo.
instalação e configuração do docker-compose
fazer upload de arquivos
Renomeie docker-compose-Linux-x86_64 para docker-compose
Carregue o arquivo docker-compose que acabou de baixar para o diretório /usr/local/bin/ do centos7
cd /usr/local/bin
ler
![]()
Adicionar permissões executáveis
chmod +x /usr/local/bin/docker-compose
![]()
Nenhum erro é relatado. Se um erro for relatado, o pip precisa ser baixado
![]()
Introdução básica ao arquivo de configuração docker-compose.yml
versão: especifica o formato de gravação do arquivo docker-compose.yml
Atualmente, o Compose tem três versões: versão 1, versão 2 e versão 3. O Compose distingue entre a versão 1 e a versão 2 (Compose 1.6.0+, Docker Engine 1.10.0+). A versão 2 oferece suporte a mais instruções. A versão 1 será lançada no futuro está obsoleto.
serviços: coleção de vários contêineres
Serviços:
Recipiente 1:
Recipiente 2:
image: nome da imagem ou ID da imagem. Se a imagem não existir localmente, o Compose tentará extrair a imagem
build: Além da imagem especificada, o serviço também pode ser baseado em um Dockerfile. Ao iniciar com up, a tarefa de compilação é executada. O rótulo de compilação é build e o caminho da pasta onde o Dockerfile está localizado pode ser especificado . O Compose usará o Dockerfile para criar a imagem automaticamente e, em seguida, iniciará o contêiner de serviço usando a imagem
hostname: Ao iniciar um microsserviço altamente disponível (cluster), ele deve ser consistente com a propriedade spring.profiles na configuração do código.
network_mode: Configure o modo de rede do contêiner de serviço
ambiente: configuração da variável de ambiente, você pode usar array ou dicionário de duas maneiras
ambiente:
RACK_ENV:
desenvolvimento SHOW: 'ture'
ambiente:
- RACK_ENV=desenvolvimento
- MOSTRAR=ture
instruções básicas do docker-compose
docker-compose.yml
versão: '3'
serviços:
nginx:
container_name: my-nginx
image: nginx
ports:
- 80:80
volumes:
- /home/nginx/html:/etc/nginx/html
- /home/nginx/conf.d:/ etc/nginx/conf.d
- /home/nginx/log:/var/log/nginx
restart: sempre
Ver informações da versão
docker-compose -v
Crie e inicie o contêiner
docker-compose
Iniciar um único serviço
docker-compose nome do serviço
Inicie o serviço em segundo plano. Não inicie o serviço em segundo plano, ele pode relatar um erro
docker-compose up -d
Pare e exclua contêineres, redes, volumes, imagens
docker-compose down
Inicie o serviço especificado ou inicie todos os serviços
docker-compose start [nome do serviço]
Pare o serviço especificado ou pare todos os serviços
docker-compose stop [nome do serviço]
listar todos os contêineres em execução
docker-compose ps
Insira o contêiner designado
docker-compose executivo
Excluir todos os contêineres de serviço (parados)
docker-compose rm
parâmetro:
-f: força a exclusão direta, incluindo contêineres ininterruptos
-v: exclui o volume de dados montado pelo contêiner
rede docker-compose
especifique o modo de rede
version: '3'
services:
nginx:
container_name: my-nginx
image: nginx
ports:
- 9999:80
volumes:
- /home/nginx/html:/usr/share/nginx/html
- /home/nginx/conf.d:/etc/nginx/conf.d
- /home/nginx/log:/var/log/nginx
restart: always
network_mode: "bridge"
Não é muito bom quando usamos esse tipo de número de porta não fixo toda vez que visitamos
Então precisamos consertar
redação
network_mode:"bridge"
network_mode:"host"
network_mode:"none"
network_mode:"service:[service_name]"
network_mode:"container:[container name/id]"
Referência a uma rede existente externamente
version: '3'
services:
nginx:
container_name: my-nginx
image: nginx
ports:
- 9999:80
volumes:
- /home/nginx/html:/etc/nginx/html
- /home/nginx/conf.d:/etc/nginx/conf.d
- /home/nginx/log:/var/log/nginx
restart: always
networks:
- test-net
networks:
test-net:
external:
name: mynet
rede personalizada
version: '3'
services:
nginx:
container_name: my-nginx
image: nginx
ports:
- 9999:80
volumes:
- /home/nginx/html:/etc/nginx/html
- /home/nginx/conf.d:/etc/nginx/conf.d
- /home/nginx/log:/var/log/nginx
restart: always
networks:
test-net:
ipv4_address: 192.168.101.110
networks:
test-net:
driver: bridge
ipam:
config:
- subnet: 192.168.101.0/24
gateway: 192.168.101.1