Docker Composeを使用して、複数のホストの複数のコンテナーにアプリケーションをデプロイすることを学んでいます。そして、私は2つの構成ファイルに遭遇しました-スタックファイルと構成ファイル。
クラウドスタックファイルYAMLリファレンス から、スタックファイルはdocker-compose.yml
に似た1つ以上のサービスを定義するYAML形式のファイルですファイルですが、いくつかの拡張子が付いています。
そして この投稿 から、stacksはdocker-composeに非常に似ていると述べていますが、docker-composeはコンテナを定義しますが。
よく似ているので、いつスタックファイルを使用するのか、いつComposeファイルを使用するのかと思いますか?
概念的には、両方のファイルは同じ目的を果たします-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-それら/
注:この質問は、Docker Cloudリファレンスがスタックを理解するための頼りになるものであり、有用であると推測していますが、それは信頼できるソースではありませんスタック対コンポーズ-代わりに、それはDockerのホストサービスに固有のガイドです。「Docker Cloudは、ビルドおよびテスト機能を備えたホストレジストリサービスを提供します。」ファイルのドキュメントについては、「 Compose file version 3 format -」を参照してください。「Compose」という名前ですが、これは、機能が構成とswarm/stackの両方で機能する信頼できる場所です。
Dockerコンテナーのグループを指定して、2つの方法で構成およびデプロイできます。
docker-compose up
)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つの規則があります。
docker-stack.yml
を使用します。 Swarmへのアプリのデプロイ 。docker-cloud.yml
を使用します。docker-compose.yml
-Composeファイル形式の古いデフォルト名を使用します。