web-dev-qa-db-ja.com

スタックファイルと作成ファイルの違いは何ですか?

Docker Composeを使用して、複数のホストの複数のコンテナーにアプリケーションをデプロイすることを学んでいます。そして、私は2つの構成ファイルに遭遇しました-スタックファイルと構成ファイル。

クラウドスタックファイルYAMLリファレンス から、スタックファイルはdocker-compose.ymlに似た1つ以上のサービスを定義するYAML形式のファイルですファイルですが、いくつかの拡張子が付いています。

そして この投稿 から、stacksはdocker-composeに非常に似ていると述べていますが、docker-composeはコンテナを定義しますが

よく似ているので、いつスタックファイルを使用するのか、いつComposeファイルを使用するのかと思いますか?

48
dayuloli

概念的には、両方のファイルは同じ目的を果たします-Dockerエンジンでのコンテナーの展開と構成。

Docker-composeツールは最初に作成され、その目的は単一のdockerエンジンで「複数コンテナーDockerアプリケーションを定義および実行するため」です。 ( docker compose overview を参照)

docker-compose upを使用して、コンテナ、ネットワーク、ボリュームなどを作成/更新します。

Docker StackはDocker Swarm(Dockerのオーケストレーションおよびスケジューリングツール)で使用されているため、追加の構成パラメーター(レプリカ、デプロイ、ロール)があります単一のdockerエンジンでは必要ありません。

スタックファイルは、docker stackコマンドによって解釈されます。このコマンドは、Docker Swarm Managerからのみ呼び出すことができます。

Docker-compose.ymlをdocker-cloud.ymlに変換したり、逆に変換したりできます。ただし、質問で述べたように、違いに注意する必要があります。また、docker-composeにはさまざまなバージョンがあることに注意する必要があります。現在、最新バージョンはバージョン3です( https://docs.docker.com/compose/compose-file/

編集:違いを理解するのに役立つかもしれない興味深いブログがここにあります https://blog.nimbleci.com/2016/09/14/docker-stacks-and-why-we-need-それら/

47
Roman Mik

注:この質問は、Docker Cloudリファレンスがスタックを理解するための頼りになるものであり、有用であると推測していますが、それは信頼できるソースではありませんスタック対コンポーズ-代わりに、それはDockerのホストサービスに固有のガイドです。「Docker Cloudは、ビルドおよびテスト機能を備えたホストレジストリサービスを提供します。」ファイルのドキュメントについては、「 Compose file version 3 format -」を参照してください。「Compose」という名前ですが、これは、機能が構成とswarm/stackの両方で機能する信頼できる場所です。

Dockerコンテナーのグループを指定して、2つの方法で構成およびデプロイできます。

  1. Docker作成(docker-compose up
  2. Docker swarm(docker swarm init; docker stack deploy --compose-file docker-stack.yml mystack

両方とも、Docker Compose file version 3 format で記述されたYAMLファイルを受け取ります。この参照は、docker-composeとdocker swarm/stackの両方の構成を文書化する主要なソースです。

ただし、2つのymlファイルでできることには、特定のオプションと特定の命名規則の間に特定の違いがあります。

オプション

使用可能なサービス構成オプションは Compose file reference ページに文書化されています。通常、オプションエントリの下部に、docker stack deployまたはdocker-compose upのいずれかによって無視されることを説明するメモが記載されています。

たとえば、次のオプションは swarmモードでスタックをデプロイする場合は無視されます (バージョン3)の構成ファイルです。

build、cap_add、cap_drop、cgroup_parent、container_name、depends_on、devices、external_links、links、network_mode、restart、security_opt、stop_signal、sysctls、tmpfs(バージョン3-3.5)、userns_mode

...一部のオプションはdocker-composeによって無視されますが、次のようなdocker stack deployで動作します:

デプロイ、restart_policy

コマンドラインから実行すると、docker stack deployは、無視しているオプションに関する警告を出力します。

サポートされていないオプションを無視:リンク

ファイルの命名

  • docker-compose upの場合、docker-compose.ymlを使用して代替ファイル名が指定されていない場合、デフォルトのファイル名は-fです( compose reference を参照)。このデフォルト名を使用して、引数なしでコマンドを実行するのが一般的です。

  • docker stack deployには、 dockerスタックデプロイリファレンス にデフォルトファイルがありません。任意の名前を使用できますが、次の3つの規則があります。

    1. 公式Docker for Beginners Ch.3で使用されているdocker-stack.ymlを使用します。 Swarmへのアプリのデプロイ
    2. docker Cloudサービスの Docker Cloud Stack YMLリファレンス で使用されているdocker-cloud.ymlを使用します。
    3. docker-compose.yml-Composeファイル形式の古いデフォルト名を使用します。
4
JeremyDouglass