理由はわからんけど、たまにコンテナの挙動がおかしくなったり、ディスク食いすぎて領域不足になることもある。 dockerそのもののバージョンアップでエラーあったから、イメージ初期化とコンテナの作り直しやってみた。
今までは記憶に頼って作り直してたけど、忘れそうになってきたのでメモしとく。
バージョン上がってた
昨日気づいたらdockerのバージョンが20から23に上がってた。 21と22飛ばしてるのは、oracleとかみたいにリリース年の末尾2桁使ってるってことか。
先週にローカルvmで定期apt実行してたら、docker起動でエラー出たから原因探してコンテナ作り直した。 aptするときに更新対象が表示されるけど、ローカルvmは躊躇せず全部上げてくようにしてる。 このトラブル解決がええ勉強になる。
自分のlinuxにはローカルvmの中で動いてるものと、gcpで動いているものがある。 gcpが本番、ローカルvmが実験とか検証用。
ローカルvmで問題解決してからgcpの分もコンテナ作成しなおした。
今回はストレージドライバが原因
ローカルvmのはテキスト残すの忘れたけどdevicemapper使ってて、gcpで動いてるのはこんな感じでoverlayってなってた。
|
|
エラーをjournalctl -xeu docker.serviceで確認してみた。
このメッセージ横に長くてめっちゃ貼り付けにくかった。
|
|
ストレージドライバ関連でエラー。 エラーメッセージにあるURL開くと、「devicemapperは性能貧弱やし非推奨やで」とか「overlayは非推奨」ともある。 今のデフォルトはoverlay2っぽい。 gcpのは去年の5月に全部作り直したのに、なんでoverlay2やなかったんやろ。
デーモンの起動オプションをvi /lib/systemd/system/docker.serviceして修正して起動してみる。
|
|
指定しなおしたらコンテナ一覧とかイメージ一覧がすっからかんになるやろなって思ったら、やっぱりそう。
|
|
いったんdocker停止させて--data-rootにあるフォルダを完全に抹消してから起動する。
最終的に作り直した後のdocker infoにはこんな感じでoverlay2を使ってるのが見えた。
|
|
1月末まで100GBぐらい/dockerの領域使ってた。
/dev/sdb 629G 109G 489G 19% /docker
今は27GB。減ったなぁ。散髪した後みたいなスッキリした気分。
/dev/sdb 629G 27G 571G 5% /docker
ローカルvmもgcpのも、永続化領域使って動かしてるから、gitlab/django/xrdp/maridb/jupyterlab/redhat8・9とか作業ディレクトリは全部維持できる。 電子証明書は作り直しになるから、それだけ配り直して設定しなおした。
必要なら起動オプション見直す
前は–containerdのオプションつけてた。
ExecStart=/usr/bin/dockerd -–containerd=/run/containerd/containerd.sock --data-root /docker/nariDockerSys
つけなくてもエラー出ないしコンテナも動いたので、外して使うことにした。 これもスッキリ。
ExecStart=/usr/bin/dockerd --data-root /docker/nariDockerSys
実は必要なものがあるのかもしれんけど、そのときまた考える。
コンテナを順番に起動する
バックエンドを起動してからフロントエンドを起動してく。 起動するとイメージ取り直しからやってくれる。
ローカルvmの場合、データベース起動、LDAPサーバ起動を先にやる。 依存性がないものは最初でも最後でもいい(jupyterlab/gitlab)。 jupyterlabはmac/windows/linuxどこからでも使うメモのファイルを置いてるから、先にやったほうがいいかも。
その後でフロントエンドのredhat起動、django4起動ってやってく。 最後にxrdpはビルドしてから起動して、全部のサービスへの接続確認実施。
ローカルvmにしかないものとか、gcpにしかないものもあるけどだいたいこんな感じ。
|
|
アプリケーションの挙動を確認する
最後のcl_ubu22はxrdpコンテナなので、全部のサービスを使うための入り口みたいなもん。 ここからブラウザでサービスを使うし、gitlabにアプリケーションやファイルの履歴を残してる。 こんな感じで確認できたらOK!!

細かいaptも必要で面倒やけど、新しく維持できるのは気持ちいいねぇ。

コンテナ作り直したからgitlabのリモートホスト名も変える
内容は維持できてるけど、ローカルのgitが指し示すホストは作り替える前のホスト名。
originってあるところの次にhttpで始まるホスト名がついてる。
|
|
これを変えとかないとpushしたとき、「そんなホストあらへんで」ってなる。
作り直したホストからいったんgit cloneしておいて、git remote -vってしてからURL調べたら、そのホストを設定する。
クローンするURLはgitlabのリポジトリ見たらコピーするボタンがあるから、そのURLをテキストエディタに貼り付けて内容確認したものを使う。
http://968362845kegq/naritomitsukasa/gvis-memo2023.git
git remote set-url origin http://968362845kegq/naritomitsukasa/gvis-memo2023.git
これでpushできる。