Dockerのルートディレクトリの移動

社内クラウドサーバーにGitLabを立てて使用していました。
しかし、直前まで正常に動作していたビルドが再ビルドすると失敗していました。

調査したところ、原因はローカルディスクの空き容量不足でした...

# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        7.8G     0  7.8G   0% /dev
tmpfs           7.8G     0  7.8G   0% /dev/shm
tmpfs           7.8G  817M  7.0G  11% /run
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda7        98G   97G  1.8G  100% /
/dev/sda1       494M  136M  358M  28% /boot
/dev/sda2       400G   51G  350G  13% /dat
/dev/sda3       300G  136G  165G  46% /log
/dev/sda5       100G  2.9G   98G   3% /sw
tmpfs           1.6G     0  1.6G   0% /run/user/1000
tmpfs           1.6G     0  1.6G   0% /run/user/0

/dev/sda7の容量が不足していることが確認できます。

引き受ける際には2TBのRAIDと文書に書かれていたのに...
私がRAIDの概念を誤解しているのだろうか...

Dockerの設定変更

ルートディレクトリを移動するためには、Dockerの設定を変更する必要があります。

公式Dockerリポジトリからインストールした場合、/etc/docker/daemon.jsonファイルを作成および修正します。

# /etc/docker/daemon.json
{
  "data-root": "/dat/docker"
}

私は作成しました。

その後、Dockerを再起動するとルートディレクトリが変更されます。

sudo systemctl restart docker

Dockerボリュームがある場合

既存のボリュームがある場合は、そのボリュームを移動先のディレクトリに移動する必要があります。

すべての情報を複製するためにrsyncコマンドを使用します。

rsync -av /var/lib/docker /dat/docker

ボリュームの容量が大きい場合

私の場合、ボリュームが約45GBあり、夜間に作業を行ったため、バックグラウンドで複製を進めました。
また、ログも確認する予定だったため、ターミナルマルチプレクサを使用してバックグラウンドで作業を進めました。

tmux
rsync -av /var/lib/docker /dat/docker

Ctrl + bを押した後、dを押すとバックグラウンドで作業が進行します。

# ターミナルを閉じていなければ最後のセッションを開く
tmux attach-session

# ターミナルを閉じた後に再確認する場合
tmux ls # セッションリストを確認
tmux attach -t 0 # セッション番号で接続

TODO

  • [ ] Dockerボリュームを定期的にバックアップする
first commit : 24/09/07
last commit : 24/09/08
Made By Svelte Rune, Designed By chimi
last commit : 24/10/17 comment : :memo: 문장 레벨 변경