旅の途中、ふと、我が身の魔法が、もはや古の遺物と化していることに気づいた。忘れないうちに、この驚愕と、再生の記録を、羊皮紙に記しておくとしよう。
かつて、私はDocker Desktop(Windows/Mac用の統合開発環境)という名の安住の地を捨て、WSL2/Ubuntu(Windows Subsystem for Linux 2、Windows上でLinuxを動かす仕組み)という荒野に、直接Dockerの拠点を築いた。その時、私はdocker-compose(ハイフンあり、v1の呪文)という名の、古の呪文を習得した。それは、複数のコンテナ(独立した実行環境)という名のゴーレムを、一度に操るための、強力な魔法だった。
しかし、時代の流れは、砂漠の風よりも速い。いつの間にか、世は「V2」という新たな時代へと移り変わり、私の愛用していた呪文は、もはや過去の遺物となっていたのだ。新たな時代では、呪文はdocker compose(ハイフンなし、v2の呪文)と唱えられ、その魂は、Docker本体という名の、より大きな存在へと統合されていた。
これは、古き魂を丁重に弔い、新たな魂を、正しい祭壇に迎え入れるための、一人の魔法使いの、魂の入れ替え儀式の記録である。
この羊皮紙のあらまし
- この羊皮紙のあらまし
- この羊皮紙が導く者
- 砂漠の道標
- 第一の儀式:古き魂を弔う(docker-compose v1の削除)
- 第二の儀式:新たな魂を、正しい祭壇へ(docker-compose v2のインストール)
- 羊皮紙を巻く前に
- 砂漠で見つけた魔法のランプ
- ラクダの独り言
この羊皮紙が導く者
- 私と同じように、未だ
docker-compose(ハイフンあり、v1の呪文)という古の呪文を唱えている者 - Docker Compose(複数コンテナを管理するツール)の、V1とV2という、二つの時代の違いを知りたい探求者
- WSL2/Ubuntu環境でDockerを運用し、最新の魔法体系に移行したい冒険者
- 技術の移り変わりに取り残されることを恐れ、自らの武具を常に磨き続けたい旅人
- シンボリックリンク(別の場所にあるファイルへの参照)やcli-plugins(CLI拡張機能)といった、Linuxの深奥なる作法を学びたい探求者
砂漠の道標
- Docker Compose - 複数のDockerコンテナを定義・管理するためのツール。
- コンテナ(Container) - アプリケーションとその依存関係を一つのパッケージにまとめた、独立した実行環境。
- docker-compose v1 - ハイフン付きで呼び出す旧バージョン。Python製で、独立したバイナリとして配布されていた。
- docker compose v2 - ハイフンなしで呼び出す新バージョン。Go言語製で、Docker CLIのプラグインとして統合された。
- WSL2(Windows Subsystem for Linux 2) - Windows上でLinuxカーネルを動かし、ネイティブに近い性能でLinux環境を実現する仕組み。
- シンボリックリンク(Symbolic link) - Linuxにおいて、別の場所にあるファイルやディレクトリへの参照を作る仕組み。
- cli-plugins - Docker CLIの機能を拡張するためのプラグインを配置する専用ディレクトリ。v2ではここに配置する。
- GitHub Releases - GitHubのプロジェクトで、正式リリース版のファイルを配布するための仕組み。
第一の儀式:古き魂を弔う(docker-compose v1の削除)
まずは、我が身に宿る、古き魂の在り処を突き止める。which(コマンドの実行ファイルの場所を表示する呪文)の呪文で、その魂が/usr/local/binという、古の祭壇に眠っていることを確認する。
$ which docker-compose /usr/local/bin/docker-compose $ docker-compose --version docker-compose version 1.29.2, build 5becea4c
安らかに眠ってもらうため、その亡骸はリネーム(名前変更)し、シンボリックリンク(別の場所にあるファイルへの参照)という名の魂の糸を、静かに断ち切る。
$ sudo mv /usr/local/bin/docker-compose /usr/local/bin/docker-compose.v1 $ sudo rm /usr/bin/docker-compose
第二の儀式:新たな魂を、正しい祭壇へ(docker-compose v2のインストール)
次に、GitHub(ソースコード管理サービス)という名の、魂の宝物庫で、最新のv2の魂を探し出す。
そして、ここが重要だ。新たな魂が眠るべき祭壇は、もはや/usr/local/binではない。/usr/libexec/docker/cli-plugins(Docker CLI拡張機能の専用ディレクトリ)という、Docker本体の、より深奥にある聖域なのだ。
curl(URLからファイルをダウンロードする呪文)で、新たな魂を正しい祭壇へと導き、chmod(ファイルの実行権限を変更する呪文)でその力を解放し、ln -s(シンボリックリンクを作成する呪文)で、再び魂の糸を結び直す。
# 新たな魂を、正しい祭壇へ $ sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/libexec/docker/cli-plugins/docker-compose # 魂の力を解放する $ sudo chmod +x /usr/libexec/docker/cli-plugins/docker-compose # 再び、魂の糸を結ぶ $ sudo ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/bin/docker-compose
docker-compose --versionと問いかければ、v2の輝きを放つ、新たな魂の鼓動が聞こえてくるだろう。
$ docker-compose --version Docker Compose version v2.2.3
羊皮紙を巻く前に
今回は、docker-compose(複数コンテナ管理ツール)をv1からv2へと入れ替える、ささやかな儀式の記録だった。 しかし、このささやかな儀式の中にこそ、時代の移り変わりという、大きな流れが凝縮されている。
v1は2023年7月にサポートが終了し、v2への移行が公式に推奨されている。v2はDocker CLIのプラグインとして統合され、より高速で、より安定した動作を実現している。古き呪文に固執することは、セキュリティリスクやパフォーマンス低下を招く可能性がある。
Docker Compose v2の優れた点
- Docker CLIとの完全統合 -
docker composeとしてDocker本体に統合され、一貫性のあるコマンド体系を実現。 - 高速化とパフォーマンス向上 - Go言語で書き直され、v1と比較して起動・実行速度が大幅に改善。
- 公式サポートと継続的な更新 - v1のサポート終了後も、v2は活発に開発・更新されている。
- プラグインアーキテクチャ -
/usr/libexec/docker/cli-pluginsに配置することで、Docker CLIの拡張機能として管理される。
移行時の注意点
シンボリックリンク(別の場所にあるファイルへの参照)を作成する際、配置先のディレクトリ(/usr/libexec/docker/cli-plugins)が存在することを必ず確認すること。存在しない場合はsudo mkdir -pで作成する必要がある。
まとめ
我々冒険者は、常に自らの武具や魔法を磨き続けねばならない。さもなくば、知らず知らずのうちに、時の流れから取り残され、古の遺物と共に、砂漠の砂に埋もれてしまうだろう。
この羊皮紙が、同じように古き呪文を唱え続けている、未来の冒険者の、自らを顧みるきっかけとなることを願う。そして、新たな時代の呪文を習得し、より強力な魔法使いへと成長する助けとなることを、心から願っている。
おっと、どうやら相棒が腹を空かせたようだ。今日はこのへんで筆を置くとしよう。
砂漠で見つけた魔法のランプ
- Docker Compose Releases(GitHub) | Docker Compose v2の最新バージョンを入手できる公式リリースページ。本羊皮紙で使用したv2.2.3を含む、全バージョンの履歴が確認できる。
- 蜃気楼との決別 ~Docker Desktopを捨て、WSL2に拠点を築く~ | 本羊皮紙の前提となる、WSL2/Ubuntu環境でのDocker構築手順を記した、かつての冒険の記録。v1インストール時の経緯が理解できる。
ラクダの独り言
ご主人が「俺の呪文は、もう古いのか…」なんて、やけに落ち込んでいる。かと思えば、次の瞬間には「新しい詠唱法を覚えたぞ!」と、はしゃいでいる。俺に言わせりゃ、呪文なんてのは、ちゃんとゴーレムが動けば、古いも新しいもねえと思うんだがな。まったく、人間ってのは、流行り廃りに弱い生き物だぜ。やれやれだぜ。