Dockerが消費される領域を移す

投稿者: | 12月 24, 2025

もう、こればっかりだが、NVMEがたかーい。しかし、OSをNVMEに入れるのは馬鹿馬鹿しい。OSなんて、起動する時のばーっと読まれるだけし、SSDとNVMEの差は、そんなにない。それに今時のOSなんて毎度起動することもなく、大体スリープかサスペンドからの復帰が普通。OSの扱いがそんなものなので、ありものの2.5インチのSSDをOS用にして、高価なNVMEは仮想マシンのデータストア用とかにしていた。ただ、もう今や仮想環境がほぼないので、もっぱら、コンテナやAIモデル用にするようにしている。

閑話休題

 

500GBのSSDのうち、LVMで100GBしかアサインしていなく、OSが20GB程度だった。よって20GBだった。絶対容量が足らなくなるので、Dockerの領域をNVMEに移すことに。

 

 

Dockerが利用する領域を変えるには/etc/docker/daemon.jsonに以下を記載する。

cat << ‘EOF’ | sudo tee /etc/docker/daemon.json
{
“data-root”: “/mnt/nvme/docker”
}
EOF
systemctl restart docker

めでたし、めでたし。しかし、気がついたらディスクの消費率が87%。つまり20GBから87GBまで増えている。。。IntelのLLMイメージを作っていたらついにパンクした。LVMを拡張して乗り越えたが、いずれまた足りなくなるのは目に見えている。一方NVMEは特に容量は増えていない。

なぜ?

今のDockerは、containerdバックエンドだった。PSコマンドちょいちょい顔出すのでおかしいなと思っていたが、実は以下が本丸。以下を実行する。

sudo cp -a /etc/containerd/config.toml /etc/containerd/config.toml.bak.$(date +%Y%m%d-%H%M%S)
sed -i ‘s|^#root = “/var/lib/containerd”|root = “/mnt/nvme/containerd”|’ /etc/containerd/config.toml
sed -i ‘s|^#state = “/run/containerd”|state = “/mnt/nvme/containerd-state”|’ /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl restart docker

これでが最初に必要だった。自分がやった時は、すでに250GBくらいSSDにばら撒かれていたので、全てのコンテナとイメージを削除してからやった。

もし、コンテナを潰さずにやる場合は、/var/lib/containerdの中身を移すこと。ただし、時間が恐ろしくかかるのでおすすめしない。大体コンテナイメージは、またPullすればいいのである程度は諦めた方がいいかもしれない。昨今のイメージはGBクラスのものも多いので、その場合は、先にコンテナレジストリに対比させればだいぶ軽減できる。

 

これからは、こう言ったコンテナインフラの話が出てきそう。コンテナレジストリ自体、コンテナを1つ立てればいいだけなので、モノがなくてもストレージ領域があれば簡単に導入ができるので。

コメントを残す