おおくまねこ

職業プログラマーです。興味のある話題を書いています。

docker-compose と docker サブコマンドの compose って結局どっち使えばいいのかという話

始めに

書いていること

Docker 管理する方法に Docker Compose を使う方法があります。

その実行する時のコマンドが複数あり、「結局どっちを使うといいのか?」、「何が違うのか?」というのが意外と情報としてないらしいので、ブログにまとめてみようと思いました。

以前から使ってる人からすると悩むところではないとは思うのですが、

Docker をこれから始める、Docker Composeは今まで使ったことない人からすると、この部分の情報があまりなかったそうです。

 

 

Docker Compose とは

Docker Compose とは、複数の Docker を使って構成されるアプリケーションを管理・実行を比較的簡単に行うことのできる機能のことです。

docker-compose.yml を設定ファイルとし、そこにそれぞれのコンテナの情報やネットワーク接続状態を記載して、特定のコマンドから起動するとサービスに必要なコンテナ郡が起動・管理が可能になる機能です。

 

実行コマンド

実際に Docker Compose をコマンドラインから実行する際に、(2021年7月)現在では以下の2パターンがあります

  • docker-compose コマンドを使う
  • docker コマンドのサブコマンドである compose を使う

 

この二つについて記載します。

 

想定してる環境

筆者の経験として開発環境や動作確認の環境構築では docker (および Docker Compose)を使っていることがしばしばなので、

そういうユースケースを想定しています。

本番環境としては若干毛色が異なるかもしれません。

(本番では kubernetes を使ってるよという人も多いかもしれません)

 

なお、個人のおすすめなので、強制力があるわけではありません。

本内容に違和感があったり、チームの方針と合わないなどあれば、そちらを優先していただければと思います。

 

本題

docker-compose と、docker compose (以下、 compose サブコマンド)の違いや、

どちらを使ったほうがいいのかについて記載します。

結論:結局どっちを使うといいのか

早速結論から言います。

compose サブコマンドを使うほうがおすすめです。

ただ、現時点では compose サブコマンドも docker-compose コマンドも互換性を維持しているので、どちらでも構わないと思います。

以前から docker-compose を使っていて、作業手順の実績があるからとかで使い続けたいとかであれば docker-compose を使っていても問題はないと思います。

 

そもそも docker-compose と compose サブコマンドはどっちが先に作られたのか

docker-compose の方が以前から存在して、使われていました。

以前までは docker-compose コマンドは、docker コマンドや docker-engine とは別になっていて、使う場合は別々にインストール必要がありました。

後追いの形で docker コマンドのサブコマンドとして、compose サブコマンドが追加されるようになっています。

 

どう違うのか

後発の compose サブコマンドは docker-compose コマンドの将来的な置き換えを目指して開発された機能になるそうです。

docker-compose は python で書かれたものですが、compose サブコマンドは compose-cli というレポジトリーで Go で再実装されています。

互換性を維持した状態で開発されています。ここでいう互換性というのは、docker-compose 側で使えるオプションコマンドや実行方法などが同じような状態で使えるようにされています。

例えば、docker compose の起動の際、docker-compose コマンドで起動する場合は以下のようでした。

docker-compose -f docker-compose-sampl.yaml up -d

 

compose サブコマンドでは以下のように実行すれば同じことが可能になります。

docker compose -f docker-compose-sampl.yaml up -d

 

互換性をどのくらい意識してくれているのか気になる方は以下のissue を参照すると良さそうです。

github.com

いつから compose サブコマンドがあるのか

Mac/Windows ともに Docker Desktop の v3.0.0 からになります。

以下抜粋

> First version of docker compose (as an alternative to the existing docker-compose). 

docs.docker.com

docs.docker.com

なので 2020 年12月くらいから compose サブコマンドが使えるようになっていることになります。

 

LinuxUbuntu)の場合、Docker 19.03 以降でインストールスクリプトを実行することでインストールできるようです。

github.com

 

最後に

まとめ

  • どちらかというと compose サブコマンドがおすすめ
  • docker-compose の後に compose サブコマンドが再開発された
  • compose サブコマンドは以前とほぼ同様の使用感で使える