どうやら、一筋縄ではいかない砂の迷宮に迷い込んだらしい。この顛末を書き残しておくか。
2024年6月30日。長年、多くの冒険者を支えてきた偉大な巨人「CentOS 7」が、ついにその役目を終え、砂に還った。新たな拠点への移住は完了したものの、時として我々は、古の巨人の知恵を借りたくなる時がある。しかし、もはや巨人をまるごと一体呼び戻すほどの土地(リソース)は残されていない。
ならば、どうするか。そうだ、Dockerという名の魂の器に、巨人の魂だけを封じ込め、いつでも呼び出せるようにすればいい。しかし、公式のオアシスが枯れた今、魂を維持するための水(yumリポジトリ)は涸れてしまっている。これは、その涸れた井戸に新たな水脈を掘り当て、サポート終了後の世界でも戦えるCentOS 7コンテナを錬成する、禁断の死霊術の記録である。
この羊皮紙のあらまし
- この羊皮紙のあらまし
- この羊皮紙が導く者
- 第一の儀式:祭壇の準備(Dockerインストール)
- 第二の儀式:魂の設計図(Dockerfile)
- 第三の儀式:魂の器の定義(docker-compose.yaml)
- 最終儀式:魂の召喚と対話
- 羊皮紙を巻く前に
- 砂漠で見つけた魔法のランプ
- ラクダの独り言
この羊皮紙が導く者
- サポートが終了しても、なおCentOS 7という古の巨人の力を必要とする者
yumが使えなくなり、古文書の宝庫への道を断たれた探求者- Dockerという魂の器に、あらゆる魂を封じ込める術に興味がある錬金術師
第一の儀式:祭壇の準備(Dockerインストール)
今回は、Rocky Linux 9.4とWSL2 Ubuntu 24.04という、二つの祭壇で儀式を執り行う。 どちらの祭壇でも、まずはDockerという名の召喚陣を設置する必要がある。
Rocky Linuxの場合
Docker公式の古文書庫を追加し、必要な道具一式をインストールする。
$ sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo $ sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin
WSL2 Ubuntuの場合
今や儀式は驚くほど簡単になった。get-docker.shという魔法の巻物を手に入れ、実行するだけだ。
$ curl -fsSL https://get.docker.com -o get-docker.sh $ sudo sh get-docker.sh
どちらの祭壇でも、儀式の後は召喚陣を起動し、術者(自分)にsudoなしで陣を操る権限を与えておくのを忘れずに。
第二の儀式:魂の設計図(Dockerfile)
ここが今回の死霊術の核心だ。Docker HubからCentOS 7の魂の素を呼び出し、現代でも戦えるように改造を施す。重要なのは、涸れた井戸(yumリポジトリ)を秘密の貯水槽(vault.centos.org)へと繋ぎ直し、魂との対話路(ssh)を確保することだ。
FROM centos:7 ENV container=docker ENV TZ=Asia/Tokyo WORKDIR /root # === 秘儀その1:涸れた井戸に、新たな水脈を === # mirrorlistを封印し、vault.centos.orgという秘密の貯水槽への水路を開く RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Base.repo RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Base.repo # 魂に必要な武具を授ける RUN yum -y update RUN yum -y group install 'System Tools' 'Development Tools' 'Development Libraries' RUN yum -y install wget openssh-server openssl openssl-devel openldap openldap-devel unixODBC-devel vim RUN yum clean all # 日本語という魂の言葉を刻む RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 # === 秘儀その2:魂との対話路を確保する === # ssh接続のための鍵を生成 RUN ssh-keygen -A # 対話のための合言葉(root/root)を設定 RUN echo "root:root" | chpasswd # 対話の扉(ポート22)を開放 EXPOSE 22 # systemdという心臓が使えないため、sshdという魂の声を直接呼び出す CMD ["/usr/sbin/sshd", "-D"]
第三の儀式:魂の器の定義(docker-compose.yaml)
魂をどんな器に宿らせるかを定義する。現世との繋がり(ポートフォワーディング)や、共有の宝物庫(ボリュームマウント)などを設定する。
services: dev: build: . container_name: centos7 volumes: - /home:/home ports: - "20022:22" tty: true restart: always
最終儀式:魂の召喚と対話
設計図と器の定義が済んだら、いよいよ魂を錬成し、召喚する。
# 魂の錬成(イメージビルド) $ docker compose build # 魂の召喚(コンテナ起動) $ docker compose up -d
召喚した魂が、確かにそこに存在することを確認する。

docker execやsshで、蘇った巨人の魂と直接対話できれば、儀式は成功だ。
魂との対話が遅い時
もしsshでの対話が遅いと感じるなら、巨人の魂が住まう家(/etc/ssh/sshd_config)のUseDNSをnoに設定し、不要な遠方への問いかけを止めさせるといい。
羊皮紙を巻く前に
サポートが終了し、砂に還ったはずのCentOS 7。しかし、Dockerという器と、vault.centos.orgという秘密の貯水槽の知識さえあれば、我々はいつでもその魂を呼び戻し、対話することができる。
WSL2 UbuntuへのDocker導入が驚くほど簡単になっていたことも、今回の旅の大きな収穫だった。 この羊皮紙が、古の巨人との対話を必要とする、未来の冒険者たちの助けとなることを願う。
東の空が白んできた。次のオアシスへ向けて、そろそろ荷造りを始めるとしよう。
砂漠で見つけた魔法のランプ
ラクダの独り言
ご主人が「しーおーえすせぶんが砂に還った」とか言って、悲しむのかと思いきや、今度は黒い画面でその魂を無理やり呼び戻す儀式を始めたぜ。死んだものは、安らかに眠らせてやるのが一番だと思うんだがな。まったく、人間の執着心ってやつは…。おっと、足元にサソリがいやがった。危ない危ない。