Jaka jest różnica między dokerem a kompozycją dokera

237

dockeri docker-composewydaje się, że współdziała z tym samym plikiem dokującym. Jaka jest różnica między tymi dwoma narzędziami?

Hafiz
źródło

Odpowiedzi:

270

The dockerCLI jest wykorzystywany przy zarządzaniu indywidualnych pojemników na silniku Döcker. Jest to wiersz polecenia klienta, aby uzyskać dostęp do interfejsu API demona dokera.

Za pomocą docker-composecli można zarządzać aplikacją zawierającą wiele kontenerów. Przenosi także wiele opcji, które można wprowadzić na pliku docker runcli do docker-compose.ymlpliku, aby ułatwić ich ponowne użycie. Działa jako „skrypt” frontendowy na tym samym interfejsie API dokera docker, dzięki czemu możesz robić wszystko, co trzeba za docker-composepomocą dockerpoleceń i wielu skryptów powłoki. Aby uzyskać więcej informacji, zapoznaj się z tą dokumentacją dotyczącą dokowania-tworzenia .


Aktualizacja dla trybu roju

Od czasu opublikowania tej odpowiedzi docker dodał drugie zastosowanie plików docker-compose.yml. Począwszy od wersji 3 yml formatu i okna dokowanego 1.13, możesz używać yml z dokowaniem-komponuj, a także do definiowania stosu w trybie roju dokera. Aby to zrobić, musisz użyć docker stack deploy -c docker-compose.yml $stack_namezamiast tego, docker-compose upa następnie zarządzać stosem za pomocą dockerpoleceń zamiast docker-composepoleceń. Mapowanie jest jeden do jednego między dwoma zastosowaniami:

  • Skomponuj projekt -> Stos roju: grupa usług do określonego celu
  • Usługa tworzenia wiadomości -> Usługa roju: Jeden obraz i jego konfiguracja, być może skalowane.
  • Skomponuj kontener -> Zadanie roju: Pojedynczy kontener w usłudze

Aby uzyskać więcej informacji na temat trybu roju, zobacz dokumentację trybu roju dokera .

BMitch
źródło
76

docker zarządza pojedynczymi pojemnikami

docker-compose zarządza wieloma aplikacjami kontenerowymi

Korzystanie z kompilatora dokującego wymaga 3 kroków:

  1. Zdefiniuj środowisko aplikacji za pomocą Dockerfile
  2. Zdefiniuj usługi aplikacji w docker-compose.yml
  3. Uruchom, docker-compose upaby uruchomić i uruchomić aplikację

dokowanie-skomponuj

Poniżej znajduje się przykład docker-compose.yml zaczerpnięty z dokumentów dokera :

services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}
JSON C11
źródło
3
Dla jasności linia build: .w websekcji wskazuje lokalizację Dockerfile utworzonego w kroku 1.
AndrewGentry