This is a Pen

プログラミングとITと日記

dockerでloopback deviceエラーを調べてみたその2

f:id:pierrot-nose:20160518170742j:plain

前回の 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ドライブかと思います。
maclinuxだったらパーティションを想像したほうがよさげです。


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系はよくないみたいですね。
ストレージ機能とセキュリティ面でいろいろとトラブルが起きそうです。
幸い、先人たちは有益な情報記事を上げていることに感謝です。

それではまたどこかでっ! ありがとうございました!

参考サイト/ページ




f:id:pierrot-nose:20160518170947p:plain

なぜか知らないけどアクセス数が跳ね上がった。
感謝感激なマツケンでした。

Related Posts Plugin for WordPress, Blogger...