docker-compose V1のEOLまで残りわずか
![](https://www.creationline.com/tech-blog/cms_x3GWkuX/wp-content/uploads/2023/06/Compose.png)
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
Docker ComposeのVersion 2がGA(General Availability、正式版)となってから1年と少々が経過したこの6月、Version 1がついにEOLを迎えます。そこで、皆様へのご案内も兼ねてDocker Composeやこれら一連のイベントについてふり返ってみたいと思います。
Docker Compose Version 1と2の違いについて
Docker Composeは、マルチコンテナのDockerアプリケーションを定義して実行するためのツールです。アプリケーションのサービス、ネットワーク、ボリュームを1つのYAMLファイルで定義し、1つのコマンドですべての起動と停止を行うことができます。Docker Composeは2つのバージョンに大別することが出来ます。
Docker Compose Version 1(以下はV1と省略)はdocker-composeコマンドとして起動します。V1はPythonを用いて開発され、2014年に最初のバージョンが公開されました。
Docker Compose Version 2(以下はV2と省略)はdocker composeコマンドとして起動します。V2はGoを用いて開発されました。2020年に製品が発表され、翌21年に最初のバージョンが公開、そして22年4月にGAが宣言されました。v20.10.13以降のDocker(Moby)には、Docker CLIプラグインとしてV2が標準で同梱されています。
そしてV1はEOLへ
V2がGAを迎えるに伴って、Docker社はブログ記事でEOLに関するタイムラインを公表しました。
これらのタイムラインはユーザーからのフィードバックやGitHub上での議論をもとに修正され、最終的にはEOLのタイミングが2023年4月から6月へと変更されています。
”Important
Compose V1 no longer receives updates and will not be available in new releases of Docker Desktop after June 2023.
Compose V2 is included with all currently supported versions of Docker Desktop. For more information, see Migrate to Compose V2.”
-https://docs.docker.com/compose/history/他
EOLを迎えるとどうなる?
V1がEOLを迎えるとDocker DesktopやComposeのインストールパッケージ内からV1が削除され、以降のバージョンではV1を利用することは出来なくなります。
docker-composeコマンドを実行する場合、現行バージョンの標準設定ではV1の代わりにV2が実行されます。しかし、本記事の執筆時点では依然としてV1とV2のどちらを実行するかをユーザーが選択することが可能でした。
(画像はDocker Desktop 4.19.0から取得)
Docker Desktopではこのオプションをオプトアウトすることにより、docker-composeの実行時にV1を利用することが可能です。ただし、オプションをオプトアウトしている場合はコマンドの実行時に次のような警告メッセージが表示されるようになります。(メッセージの出力を抑止することも可能ですが、本稿では詳細を割愛します。)
現状のDocker Desktopでは、このようにV2の利用をオプトアウトする事が可能です。しかし、EOL以降はこのオプションが削除されV1が完全に利用できなくなり、docker-composeコマンドは単にdocker composeコマンドへのエイリアスとして機能するのみになります。
ユーザーに推奨される対処
V1がEOLを迎えるにあたって、直接的な影響を受ける操作の例として次のようなものがあります。
V2で廃止される操作
・docker-compose scale (代替として、docker compose up --scaleを利用してください)
・docker-compose rm --all
V1から変更となったコマンドの挙動
・--compatibilityフラグ
コンテナ名の区切り文字について、”-(ハイフン)”の代わりに”_(アンダーバー)”を使用するようにしてください。
・ps --filter KEY-VALUE
このようなフィルタリング操作はV2では動作しません。--filter=status=runningのように、特定のプロパティによるフィルタリングのみが許可されます。
Docker社ではMigrate to Compose V2(英語)などのドキュメントを参照し、V2へ移行することを推奨しています。V2への移行後もdocker-composeのエイリアスは維持されるため、大半のユースケースにおいて大きな問題は無いとしていますが、上記のような機能差分が存在することもまた事実です。そのため、Migrate to Compose V2を元にご自身のプロジェクトについて今一度確認されることをお勧めいたします。
ユーザーは、EOL後も自己の責任においてV1の利用を続けることが出来ます。しかし、2021年5月10日に最終リリース(v1.29.2)が公開されて以降、V1へ一切のfixは提供されておらず、また、今後も提供されることはないことを認識しておくべきでしょう。