Ubuntuのsnap版dockerでCompose V2を使う
要約
Ubuntu 20.04 LTS(server版や各種フレーバを含む)のsnap版dockerの場合は,次のコマンドでCompose V2が使えるようになります.
mkdir -p ~/snap/docker/current/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o ~/snap/docker/current/.docker/cli-plugins/docker-compose
chmod +x ~/snap/docker/current/.docker/cli-plugins/docker-compose
概要
Docker Compose V2をdocker公式ドキュメントの方法に従ってUbuntu 20.04 LTSへインストールしましたが,使うことができませんでした.
調べたところ,Ubuntuではパッケージからdockerをインストールする方法が複数あり,そのうちsnap版dockerをインストールしている場合にはCompose V2をインストールするプラグインディレクトリが異なることが分かりました.正しいディレクトリへプラグインをインストールすればCompose V2が使えるようになります.
Compose V2とは
Docker Composeはdockerの補助ツールの1つで,旧来は独立したdocker-compose
コマンドがありました.しかし,dockerコマンドの機能強化に伴って,これまでdocker-composeコマンドが提供してきた機能がdockerコマンドのサブコマンドとして書き直され,docker compose
として実行できるようになりました.これがCompose V2と呼ばれています.
- Compose V1:
docker-compose
(docker-composeコマンド) - Compose V2:
docker compose
(dockerコマンドのcomposeサブコマンド)
詳細: https://docs.docker.com/compose/cli-command/
Linuxの場合は,バイナリのプラグインをダウンロード・設置してインストールする方法が,docker公式ドキュメントで案内されています.
手順: https://docs.docker.com/compose/cli-command/#install-on-linux
Ubuntu 20.04 LTSにおける3種類のdockerパッケージ
Ubuntu 20.04 LTSでは,パッケージからdockerをインストールする方法として,主に次の3つの方法があります.
- snap版docker
- ubuntu公式 deb版docker (docker.io)
- docker公式 deb版docker (docker-ce)
Ubuntu 20.04 LTSの標準的なインストール手順では,snap版dockerがインストールされます.インストールされているdockerがsnap版またはdeb版のどちらであるかは,次のコマンドにより調べることができます.
snap版dockerのインストール状況を調べる:
snap list docker
deb版dockerのインストール状況を調べる:
apt list --installed docker docker-ce docker.io
ここで,docker公式ドキュメントに従ってCompose V2をインストールすると,deb版dockerでは正しくインストールされて使用できますが,snap版dockerではCompose V2を使うことができません.snap版dockerではプラグインのディレクトリが異なっているためです.
Compose V2のインストール方法
プラグインをダウンロード・設置する際に,インストール先ディレクトリを正しく設定すれば解決します.
snap版dockerの場合
プラグインのインストールディレクトリを~/snap/docker/current/.docker/cli-plugins/
にします.
mkdir -p ~/snap/docker/current/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o ~/snap/docker/current/.docker/cli-plugins/docker-compose
chmod +x ~/snap/docker/current/.docker/cli-plugins/docker-compose
deb版dockerの場合
プラグインのインストールディレクトリを~/.docker/cli-plugins/
にします.これはdocker公式ドキュメントで示されている手順と同じです.
mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
どちらにも対応したい場合
両方のディレクトリにインストールするか,または,リンクを張ります.
まとめ
Ubuntu 20.04 LTSにCompose V2をインストール・使用する場合は,docker公式ドキュメントの手順では動作しない場合があります.その際は,プラグインのインストール先ディレクトリを変更すれば解決します.
Discussion