docker
e docker-compose
parece estar interagindo com o mesmo dockerFile, qual é a diferença entre as duas ferramentas?
fonte
docker
e docker-compose
parece estar interagindo com o mesmo dockerFile, qual é a diferença entre as duas ferramentas?
O docker
cli é usado ao gerenciar contêineres individuais em um mecanismo de janela de encaixe. É a linha de comandos do cliente para acessar a API do docker daemon.
O docker-compose
CLI pode ser usado para gerenciar um aplicativo com vários contêineres. Ele também move muitas das opções que você docker run
inserirá no CLI no docker-compose.yml
arquivo para facilitar a reutilização. Ele funciona como um "script" de front-end sobre a mesma API do docker usada por docker
, portanto, você pode fazer tudo o que docker-compose
faz com docker
comandos e muitos scripts de shell. Consulte esta documentação em docker-compose para obter mais detalhes.
Atualização para o modo Swarm
Desde que esta resposta foi postada, o docker adicionou um segundo uso de arquivos docker-compose.yml. A partir do formato yml da versão 3 e da janela de encaixe 1.13, você pode usar o yml com docker-compose e também para definir uma pilha no modo de enxame da janela de encaixe. Para fazer o último, você precisa usar em docker stack deploy -c docker-compose.yml $stack_name
vez de docker-compose up
e gerenciar a pilha com docker
comandos em vez de docker-compose
comandos. O mapeamento é um por um entre os dois usos:
Para obter mais detalhes sobre o modo enxame, consulte a documentação do modo enxame do docker .
docker
gerencia contêineres únicos
docker-compose
gerencia vários aplicativos de contêiner
O uso do docker-compose requer 3 etapas:
docker-compose up
para iniciar e executar o aplicativoAbaixo está um exemplo do docker-compose.yml, extraído dos documentos do docker :
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
build: .
naweb
seção aponta para o local do Dockerfile criado na etapa 1.