6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dockerがディスクを圧迫した時にやること

Posted at

概要

Dockerすごい便利なんですが、油断して作業していると大量にデータが発生して、容量100%でサーバが動かなくなるまで気づかなくて死ぬというイベントが不定期に発生します。本記事では対策として以下の2つの方法について紹介します。

  • 定期的にクリーニングする
  • データの保存場所を余裕のあるディスクに移動する

クリーニング方法

Dockerイメージをクリーニング

Dockerイメージのビルドを繰り返しているとゴミイメージが大量に蓄積します。使用していないイメージなどをすっきり掃除しましょう。動作しているコンテナには影響を与えないようにいい感じに削除してくれます。

docker image prune -a -f

Dockerコンテナをクリーニング

コンテナの停止起動を繰り返していたり、実験をしていると使われていないコンテナが大量に溜まっていきますね。docker psだけでは見えないコンテナも隠れているのでお掃除しちゃいましょう。動作しているコンテナには影響を与えないようにいい感じに削除してくれます。

docker system prune -a -f

Dockerの一時ファイル保存場所を別の場所に移動する

Dockerの一時ファイルは/var/lib/dockerにデフォルトで保存されます。データには、イメージ、ボリューム、コンテナ内の一時ファイル、およびクラスタの状態などの永続化されたデータが格納されています。HDDなどの余裕のあるディスクに移動することでディスクを圧迫するようなイベントの頻度を下げることができます。

  1. コンテナは動かしたままでOKです。まずは退避先にファイルの一次コピーを開始します。コマンド終了後に「コピー中に削除・追加されたファイルがあるでー」と言われますが、後でコピーし直すので無視でOKです。

    sudo rsync -axPS /var/lib/docker/ /移動先のディレクトリ
    
  2. sudo vi /etc/docker/daemon.jsonで設定ファイルに以下の設定を追記します。ファイルがなければ作成してください。

    /etc/docker/daemon.json
    {
      "data-root" : "/移動先のディレクトリ"
    }
    
  3. Dockerデーモンを停止します。

    sudo service docker stop
    
  4. Dockerデーモンが停止したら2次コピーを開始します。すでにある一次コピーの差分コピーを行います。数分で終わるはずです。

    sudo rsync -axPS /var/lib/docker/ /移動先のディレクトリ
    
  5. この時点でデーモンを再開すると、/移動先のディレクトリを参照してデーモンが開始しますが、元のディレクトリの場所を参照せずに動作していることを確認するためにディレクトリ名を変更しておきます。もし動作しなかった場合に備えて削除はまだ我慢です。

    sudo mv /var/lib/docker /var/lib/docker.bak
    
  6. Dockerデーモンを開始し、コンテナが起動していることを確認します。

    sudo service docker start
    
  7. コンテナの動作やDockerコマンドの操作含め問題が起こっていないことを入念に確認してから、元のファイル場所を削除します。できれば数日間観察してほしいです。

    sudo rm -rf /var/lib/docker.bak
    

参考

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?