Qual é a diferença entre docker e docker-compose

237

dockere docker-composeparece estar interagindo com o mesmo dockerFile, qual é a diferença entre as duas ferramentas?

Hafiz
fonte

Respostas:

270

O dockercli é 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-composeCLI pode ser usado para gerenciar um aplicativo com vários contêineres. Ele também move muitas das opções que você docker runinserirá no CLI no docker-compose.ymlarquivo 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-composefaz com dockercomandos 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_namevez de docker-compose upe gerenciar a pilha com dockercomandos em vez de docker-composecomandos. O mapeamento é um por um entre os dois usos:

  • Projeto de composição -> Pilha de enxame: um grupo de serviços para uma finalidade específica
  • Serviço de composição -> Serviço de enxame: uma imagem e sua configuração, possivelmente ampliadas.
  • Compor Container -> Swarm Task: Um único container em um serviço

Para obter mais detalhes sobre o modo enxame, consulte a documentação do modo enxame do docker .

BMitch
fonte
76

docker gerencia contêineres únicos

docker-compose gerencia vários aplicativos de contêiner

O uso do docker-compose requer 3 etapas:

  1. Defina o ambiente do aplicativo com um Dockerfile
  2. Defina os serviços de aplicativo em docker-compose.yml
  3. Executar docker-compose uppara iniciar e executar o aplicativo

docker-compor

Abaixo 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: {}
JSON C11
fonte
3
Por uma questão de clareza, a linha build: .na webseção aponta para o local do Dockerfile criado na etapa 1.
AndrewGentry