[解決済み] なぜdockerイメージはdockerが使用していない私のディスクスペースを食べるのでしょうか?
質問
dockerをセットアップして、dockerのシステムデータを格納するために、全く別のブロックデバイスを使用しました。
[root@blink1 /]# cat /etc/sysconfig/docker
# /etc/sysconfig/docker
other_args="-H tcp://0.0.0.0:9367 -H unix:///var/run/docker.sock -g /disk1/docker"
なお
/disk/1
は全く別のハードディスクを使用しています
/dev/xvdi
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.8G 5.1G 2.6G 67% /
devtmpfs 1.9G 108K 1.9G 1% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/xvdi 20G 5.3G 15G 27% /disk1
/dev/dm-1 9.8G 1.7G 7.6G 18% /disk1/docker/devicemapper/mnt/bb6c540bae25aaf01aedf56ff61ffed8c6ae41aa9bd06122d440c6053e3486bf
/dev/dm-2 9.8G 1.7G 7.7G 18% /disk1/docker/devicemapper/mnt/c85f756c59a5e1d260c3cdb473f3f4d9e55ac568967abe190eeaf9c4087afeac
問題は、dockerイメージのダウンロードとdockerコンテナの実行を続けていると、どうやらもう一方のハードディスクが
/dev/xvda1
も使い果たしたようです。
この問題は、いくつかのdockerイメージを削除することで確認することができます。いくつかのDocker Imageを削除したところ
/dev/xvda1
には、さらに余分なスペースができました。
何か見落としているのでしょうか?
私のdockerのバージョンです。
[root@blink1 /]# docker info
Containers: 2
Images: 42
Storage Driver: devicemapper
Pool Name: docker-202:1-275421-pool
Pool Blocksize: 64 Kb
Data file: /disk1/docker/devicemapper/devicemapper/data
Metadata file: /disk1/docker/devicemapper/devicemapper/metadata
Data Space Used: 3054.4 Mb
Data Space Total: 102400.0 Mb
Metadata Space Used: 4.7 Mb
Metadata Space Total: 2048.0 Mb
Execution Driver: native-0.2
Kernel Version: 3.14.20-20.44.amzn1.x86_64
Operating System: Amazon Linux AMI 2014.09
どのように解決するのですか?
これは devicemapper のカーネルの問題で、RedHat 系 OS (RedHat, Fedora, CentOS, Amazon Linux) に影響します。削除されたコンテナは、マップされたディスク領域を解放しません。つまり、影響を受ける OS では、コンテナを起動したり再起動したりすると、徐々にスペースが不足していきます。
Docker プロジェクトはこのことを認識しており、カーネルはアップストリームで修正されていると思われます ( https://github.com/docker/docker/issues/3182 ).
一種の回避策は、Dockerに書き込み用の独自のボリュームを与えることです ( "Dockerがディスクスペースを食いつぶしてしまう場合" ). これは実際にスペースを消費することを止めるのではなく、消費した後にシステムの他の部分をダウンさせることを止めるだけです。
私の解決策は、docker をアンインストールし、そのファイルをすべて削除し、再インストールすることでした。
sudo yum remove docker
sudo rm -rf /var/lib/docker
sudo yum install docker
これでスペースは戻りましたが、単に代替のインスタンスを起動するのと大差ありません。これ以上すっきりした解決策は見つかっていません。
関連
-
[解決済み] Dockerでイメージのクリーンビルドを強制する方法
-
[解決済み] Dockerイメージの削除方法について教えてください。
-
[解決済み] Docker リポジトリ名の変更、イメージ名の変更方法は?
-
[解決済み] Dockerイメージをコンテナとして実行する
-
[解決済み】Dockerイメージとコンテナの違いは何ですか?
-
[解決済み] docker-composeでDockerコンテナに固定IPを提供する
-
[解決済み] ディレクトリをファイルにマウントしようとしていませんか(またはその逆)?
-
[解決済み] docker execで2つのコマンドを実行する方法
-
[解決済み] dockerイメージフィルタの使用方法
-
[解決済み] Dockerfileです。一行で複数の環境変数を設定する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Docker Compose: そのようなイメージはありません
-
[解決済み] docker イメージの sha256 コードはどこで確認できますか?
-
[解決済み] dockerのホストOSとコンテナのベースイメージOSの関係を教えてください。
-
[解決済み] Dockerがコンテキスト外のシンボリックリンクをフォローする
-
[解決済み] Dockerfileに複数行のコマンドを改行を維持したまま記述する方法とは?
-
[解決済み] Dockerの実行と作成
-
[解決済み] docker-compose.ymlで環境変数を再利用する
-
[解決済み] docker-compose 同じイメージに複数のインスタンスを作成する
-
[解決済み] 「docker cp" フォルダから既存のコンテナフォルダへの全ファイルのコピー
-
[解決済み] docker attach と docker exec の違い