2017-09-01 7 views
4

Docker Swarm(現在はDockerに組み込まれています)とDocker-Composeがあります。単一のノード上でのみコンテナを実行する場合、Docker-Composeを使用するように見えます。ただし、Docker-Composeはdeployの設定値のいずれもサポートしていません。https://docs.docker.com/compose/compose-file/#deployを参照してください。mem_limitcpusが含まれています。単一のノードでDocker Swarm(Docker-Composeの代わりに)を使用しない理由は何ですか?

だから、私はDocker Swarmを使うべきでしょうか?私は単一のノードにのみ展開しています。また、インストール手順は他の人が従う方が簡単です(Docker-Composeをインストールする必要はありません)。

しかし、1つのノードでSwarmを使用すべきではない理由がありますか?

私は以下の回答を投稿していますが、正しいかどうかはわかりません。

編集:これは意見ベースの問題ではないことに注意してください。あなたが以下の答えを見ると、が "have-to""can not-do"であることがわかります。

答えて

3

開発のために、Docker-Composeを使用してください。 Docker-ComposeだけがあなたのDockerfilesを読み込んでイメージを構築することができるからです。 Docker Stackは、あらかじめ組み込まれたイメージを必要とします。また、Docker-Composeを使用すると、docker-compose kill ...... start ...という単一のコンテナを簡単に開始および停止することができます。これは、開発中(私の経験上)に便利です。たとえば、データベースを強制終了すると、アプリケーションサーバーがどのように反応するかを確認します。その後、Swarmにデータベースを直接自動再起動させたくありません。

生産時には、Docker Swarmを使用します(以下を参照してください)。memの制限を設定できます。 Docker-ComposeはDocker Swarm(たとえばmemやcpuの制限なし)の機能が少なく、Swarmはでないものはありません。(右?)。したがって、本番環境でComposeを使用する理由はありません。 (もしあなたが既にComposeの仕組みを知っていて、新しいSwarmコマンドについて読んで時間を費やしたくないのを除けば)。

Docker SwarmはDocker-Composeのようなファイルをサポートしていません。たとえば、 .envファイル内のIMAGE_VERSION=1.2.3、次にdocker-compose.ymlファイル内には、image: name:${IMAGE_VERSION}があります。 https://github.com/moby/moby/issues/29133を参照してください。代わりにenv varsを "手動で"設定する必要があります:IMAGE_VERSION=SOMETHING docker stack up ...(これは実際に私がDocker-Composeに固執していました+ Swarmを介してコンテナのログを表示する方法を、より複雑になります)

関連する問題