2018年7月23日月曜日

Fedora 28 on Thinkpad X1 Carbon 6th な環境で docker がうまく動かなかった→動いたの個人的メモ

X1 Carbon gen 6th に Fedora 28 をインストールしてるんだけど、どうも docker まわりが不安定になった。が、回復したので適当にメモ。

512GB(SSD) に自動で LVM を切って、普通に dnf install docker したら勝手に
docker-pool なる LV を 178GB もとられてしまった。どうも最近の Fedora の docker は root パーティションがある VG に空きがあると、自動で Storage Driver を devicemapper にしてくれる模様。これはこれで良いのだが、このときの LV のサイズが空き容量の 40% がデフォルトらしい。

これは /usr/share/container-storage-setup/container-storage-setup に以下の定義があることでわかる。
DATA_SIZE=40%FREE

どうも Thin provisioning のようなので、実際に利用されているディスク量しか消費されないのだと思うのだが、vgdisplay で見ると残量が単純に 178GB を引き算された値になってる。何か気持ち悪いので docker を一回アンインストールしてインストール後、 /etc/sysconfig/docker-storage-setup に以下を記述して docker デーモンを起動した。
DATA_SIZE=20G
lvdisplay で docker-pool が 20GB になってることを確認。まぁこれくらいのサイズでいいだろう。

しかし、今度は docker デーモンは立ち上がるものの、試しに docker run -it --rm fedora:28 /bin/bash などとしてもコンテナがすぐ終わっちゃう。/var/log/audit/audit.log になんだか denied がたくさん出てるので、setools を入れて audit2allow でごまかそうと企む。

 とりあえず、tail -f /var/log/audit/audit.log としておいて docker run ... を実行する。吐かれたログをコピペして別ファイルに保存。で、以下のように audit2allow にかませる。
audit2allow -M docker < /tmp/docker-audit

出来た docker.pp ファイルを semodule にかませる
semodule -i docker.pp

これを 2 回繰り返したら docker run ... 出来るようになった。ちなみに追加した許可は以下。

allow container_t container_file_t:chr_file { read write };
allow container_t container_file_t:chr_file { getattr ioctl open };
うーーん、docker をアンインストールしたときに何やら外れたんだろう。もっとスマートな直し方がありそうなもんだけど、まぁいいや。

1 件のコメント:

  1. 本件根本的自己解決したのでメモ。

    どうやら selinux-policy が古かったくさい。dnf update で全部アップデート下後、dnf erase container-selinux; dnf install container-selinux で解決。

    俺の時間を返してくれw

    返信削除