旅の途中、興味深いオアシスを見つけた。忘れないうちに、この羊皮紙に記しておくとしよう。
私の旅路において、Docker Desktop for Windows(Windows用Docker統合環境)という巨大で便利な蜃気楼は、長らく有用なオアシスであった。だが、その蜃気楼は、時に牙を剥く。Cドライブ(システムドライブ)を食い尽くし、アップデートの度に自壊し、私の貴重な時間を、何度も無に帰したのだ。
もう、蜃気楼に惑わされるのは終わりだ。私は決意した。WSL2/Ubuntu(Windows上のLinux環境)という、より質実剛健な、しかし確かな大地に、自らの手で、直接Dockerの拠点を築き上げることを。
今となっては、get-docker.shという魔法の巻物(公式インストールスクリプト)一つで、この儀式は驚くほど簡単に終わる。 しかし、これは、まだその魔法が存在しなかった時代に、私が手探りで、一つ一つの呪文を詠唱し、拠点を築き上げた、古き冒険の記録である。
この羊皮紙のあらまし
- この羊皮紙のあらまし
- この羊皮紙が導く者
- 砂漠の道標
- 第一の儀式:聖なる武具を揃え、神々の印章を授かる
- 第二の儀式:新たなる魂を、正しい祭壇へ
- 第三の儀式:見えざる結界を突破する
- 最終儀式:魂の鼓動を確認する
- 羊皮紙を巻く前に
- 砂漠で見つけた魔法のランプ
- 羊皮紙の余白に書き足す
- ラクダの独り言
この羊皮紙が導く者
- Docker Desktop for Windowsという、肥大化した蜃気楼に、絶望した者
- ディスク枯渇という名の悪夢から、解放されたいと願う探求者
- かつての冒険者たちが、いかにしてDockerの拠点を築き上げていたか、その古の儀式に興味がある考古学者
- WSL2/Ubuntuに直接Dockerを構築し、より軽量で安定した環境を求める開拓者
- 現代の簡単な方法(
get-docker.sh)が登場する前の、苦難に満ちた道のりを知りたい探求者
砂漠の道標
- Docker Desktop for Windows - Windows用のDocker統合環境。便利だが肥大化しやすく、ディスク容量を大量消費する蜃気楼。
- WSL2(Windows Subsystem for Linux 2) - Windows上でLinuxを動かす技術。より軽量で安定したDockerの拠点となる質実剛健な大地。
- Ubuntu - 人気の高いLinuxディストリビューション。WSL2上で動作させる安定した基盤。
- apt(Advanced Package Tool) - Ubuntuのパッケージ管理システム。ソフトウェアのインストール・更新を司る呪文。
- docker-ce(Docker Community Edition) - Dockerの本体。コンテナ技術を提供する魂。
- docker-compose - 複数のコンテナを一括管理するツール。複雑なアプリケーション構成を簡単に扱える神器。
- iptables - Linuxのファイアウォール管理ツール。Dockerのネットワーク制御に必要な古の理。
- get-docker.sh - Docker公式の自動インストールスクリプト。現代では、これ一つで全てが完了する魔法の巻物。
第一の儀式:聖なる武具を揃え、神々の印章を授かる
新たな拠点を築くため、私はまず、古の儀式に則り、大地を清めることから始めた。
apt(Ubuntuのパッケージ管理コマンド)の呪文を唱え、ca-certificates(証明書管理ツール)やgnupg-agent(暗号化ツール)といった、儀式に必要な聖なる武具を揃える。
次にcurl(ファイル取得コマンド)の呪文で、Dockerという神々の、公式GPGキー(暗号化された公開鍵)という名の印章を授かり、apt-keyで、その印章が本物であることを、この大地に知らしめた。
そしてadd-apt-repository(リポジトリ追加コマンド)の呪文で、神々の古文書庫(Dockerの公式パッケージリポジトリ)と、正式な契約を結ぶ。
準備は整った。
最後のapt installの詠唱と共に、docker-ce(Docker Community Edition:Docker本体)という名の、Dockerの魂そのものを、この大地に降臨させたのだ。
第二の儀式:新たなる魂を、正しい祭壇へ
aptで降臨するdocker-compose(複数コンテナ管理ツール)の魂は、古すぎて使い物にならないことがある。私は、GitHub(ソースコード共有サイト)という宝物庫から、最新のV2の魂を直接授かり、それを正しい祭壇へと祀り直す必要があった。
魂を祭壇に運び、その力を解放し、大地との糸を結ぶための呪文は、こうだ。
# 最新の魂を、正しい祭壇へ $ sudo curl -L "https://.../docker-compose-..." -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
第三の儀式:見えざる結界を突破する
この大地には、数々の見えざる結界が存在した。私は、それらを一つ一つ、解き明かしていった。
プロキシという名の結界
会社のネットワークという、強力な結界の中で旅をするには、/etc/default/dockerという古文書(Docker設定ファイル)に、通行手形(プロキシ設定)を記さねばならなかった。
iptablesという、古の理
Ubuntu 22.04以降の大地では、iptables(Linuxのファイアウォール管理ツール)の理が、古のものから新しきもの(nftables)へと変わっていた。Dockerの魂は、古の理でしか動けない。私はupdate-alternatives(システム設定切り替えコマンド)の呪文を唱え、時の流れを、古き良き時代へと巻き戻したのだ。
# 時の理を、古きものへと固定する $ sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
最終儀式:魂の鼓動を確認する
全ての儀式を終え、私はsudo service docker start(Docker起動コマンド)で魂に命を吹き込んだ。
そして、お決まりのhello-world(Docker動作確認用の最小コンテナ)を召喚する。その声が聞こえた時、私の新たな拠点は、ついに完成したのだ。
$ sudo docker run hello-world Hello from Docker! ...
羊皮紙を巻く前に
Docker Desktop for Windowsとの、苦難に満ちた戦いの日々。その全てから、私はついに解放された。
この羊皮紙に記した儀式は、今となっては、ほとんど不要になった。公式のget-docker.shという魔法の巻物が登場し、わずか一行のコマンドで、全てが完了する時代が来たのだ。しかし、かつては、ここに記したような、一つ一つの呪文を、私自身が手探りで詠唱していた。その泥臭くも熱い道のりを、この羊皮紙は記録している。
WSL2/Ubuntuに直接Dockerを築くこの道は、Docker Desktopという巨大な蜃気楼から解放される、真の自由への道だった。ディスク容量の悩みも、アップデートの恐怖も、全てが消え去った。残ったのは、軽快で安定した、確かな拠点だけだ。
WSL2直接構築がもたらす価値
- 圧倒的な軽量性 - Docker Desktopと比較して、ディスク使用量が劇的に削減される
- 安定性の向上 - アップデートによる自壊から解放され、安心して運用できる
- 真の理解 - Dockerの仕組みを深く理解し、より高度な制御が可能になる
- 現代の簡単さ -
get-docker.shにより、かつての複雑な儀式は不要に
現代の旅人への道標
今から始める冒険者へ:この羊皮紙の古の儀式は不要だ。以下の一行で、全てが完了する:
$ curl -fsSL https://get.docker.com -o get-docker.sh $ sudo sh get-docker.sh
しかし、先達がどのような苦難を乗り越えてきたか、その歴史を知ることには価値がある。
まとめ
Docker Desktop for Windowsという蜃気楼との決別は、決して後退ではなかった。むしろ、より軽快で、より安定した、真の自由への、一歩だったのだ。
かつての複雑な儀式は、今や魔法の巻物一つで完了する。しかし、その魔法が生まれる前に、我々先達が歩んだ道のりを、この羊皮紙は記録している。
この羊皮紙が、快適な旅しか知らない若い冒険者たちへ、我々先達が歩んだ、泥臭くも熱い道のりを伝える、ささやかな語り草となることを願う。
風向きが変わったようだ。この機を逃さず、次の砂丘へと旅立とう。
砂漠で見つけた魔法のランプ
- Install Docker Engine on Ubuntu | Docker公式インストールガイド。神々の公式な古文書
- get-docker.sh - Convenience Script | 現代の魔法の巻物。これ一つで全てが完了する
- WSL2/Ubuntu に Docker をインストールする | 先達の知恵が記された羊皮紙
- WSLのdocker daemonを自動起動させる | 自動起動の呪文を記した賢者の書
羊皮紙の余白に書き足す
Docker Desktopに頼らずとも、GUIで管理したい?ならば、Portainerという名の、魂の翻訳機を導入するといい。その儀式は、また別の羊皮紙に記してある。
ラクダの独り言
ご主人が「昔は、こうやって苦労して拠点を築いたもんだ」なんて、やけに得意げに古い冒険譚を語っている。俺に言わせりゃ、昔の苦労話なんぞ、酒の肴にすりゃいいんだ。今が楽なら、それで万々歳じゃねえか。まったく、人間ってのは、終わった話が好きなもんだぜ。やれやれだぜ。