dockerでloopback deviceエラーを調べてみたその2
前回の
dockerでloopback deviceエラーを調べてみたその1にて
loopback device についてのエラーの解消方法について書いていこうかと思います。
dockerのストレージ、ディスク管理について
dockerの情報の確認には以下のコマンドを使用する
$ docker info ~ Data file:/dev/loop0 Metadata file:/dev/loop1 ~
今までは対して気にしていなかったが、dockerを導入する際に
ストレージ用として loopback device が作成されていることがわかる。
loopback deviceってなに?
そもそもloopback deviceってなんなの状態ですが、
一つのディスクファイルイメージに対して、デバイスを割り当ててあたかも物理ディスクの様に利用する機能。
やっぱり難しい言葉は嫌いです。わかりません。
簡単に言ってしまうと、みなさん一度は使ったことのあるDaemonTOOLみたいなもの。
DaemonToolLite | Loopback device | ディスクイメージにデバイスを割り当てる |
---|---|---|
.ISOファイル等 | 今回のDataとMetadataファイル | ディスクイメージ |
DVDやCDが入っているドライバとして認識 | 物理ディスク(ドライブ)として認識される | それぞれマウントされた結果 |
物理ディスクってイメージつきにくいと思いますが、
感覚としてwindowsのCドライブとかDドライブかと思います。
macやlinuxだったらパーティションを想像したほうがよさげです。
docker info
でおそらくdevicemapperって見えるかと思います。
- LVM ➡ device mapper ➡ loopback device ⇒ 今ここ
LVMとdevice mapperはどちらというとlinuxのストレージ関連の機能で調べたほうが
色々都合がよさそうなのでここでは飛ばします。
(・・・いうてloopbackもばっちりlinuxだけどね)
何をやればいいのか?
- loopback deviceにて使用してる仮想ディスク(LVM)を作る
- 別の方法でディスク領域を確保する
今回はOverlayFSで別の方法でディスク領域を確保します。
なぜなら簡単かつ高速だからです。
手順
sudoなど必要かもしれませんがここでは省略してしまいます
# まずまずdockerパイセンを停止 $ systemctl stop docker.service # dockerのストレージ設定をいじる $ vim /etc/sysconfig/docker # ファイル内の以下を修正 OPTIONS="--selinux-enabled=false -s overlay"
OverlayFSは高速ですが、SELinuxはサポートしておらずここでは無効化する。
それでは続き。
# dockerのimagesやcontainer置き場/var/lib/docker配下を消しに行く $ rm -rf /var/lib/docker # 念のためここの設定も変更(任意) $ vim /etc/sysconfig/docker-storage DOCKER_STORAGE_OPTIONS=-s overlay # コメントでここはいじらないでくださいと書いてありますが # ここに書いた理由が思い出せません。だれか教えてください
ここまでの設定がおわったらサービス起動しなおせばおけです。
# サービス起動~ $ systemctl enabled docker.service $ systemctl start docker.service # ここでうまく行かなかったらエラー内容を下記コマンドで確認 $ systemctl status docker -l # docker情報の確認 $ docker info Storage Driver: overlay Backing Filesystem: extfs Execution Driver: native-0.2 # 試しにhello-world $ docker run hello-world ~~ sha256:4f32210e234b4ad5cac92efacc0a3d602b02476c754f13d517e1ada048e5a8ba # 起動されたコンテナを確認 $ docker ps -a 64be1c7d7441 hello-world # ストレージを見に行く $ ls /var/lib/docker/containers 64be1c7d7441c037e2f6c8e813469f7b0020ec7ff9~~(フォルダ名)
動きましたか?
環境によっては手順通りにいかない場合があるかもしれませんが
kernelのバージョン更新だったり、フォルダのpermission変更等で
乗り越えられるかと思います。
必要であらばまた別の日にでも記事を出しておきます。
まとめ
dockerの相性的にCentOS7やRHEL,fedora系はよくないみたいですね。
ストレージ機能とセキュリティ面でいろいろとトラブルが起きそうです。
幸い、先人たちは有益な情報記事を上げていることに感謝です。
それではまたどこかでっ!
ありがとうございました!
参考サイト/ページ
なぜか知らないけどアクセス数が跳ね上がった。
感謝感激なマツケンでした。