Dockerでoperation not supportedが出てきた話
はじめに
DockerでイメージをbuildしようとDockerfileの作ってbuildしてみたものの、
operation not supported
というメッセージでRUNで記載したコマンドが実行できない事象に陥りました。
解決方法
LXCを導入したい場合、以下必要なことがわかりました(根本的な理由は調べてません)。
- CONFIG_VETHの値(カーネルコンフィグ)
- lxc
- cgroups
CONFIG_VETHの値の確認は下記コマンドにて行いました。 下記の結果が表示されていれば値が入っている状態となります。
$ zcat /proc/config.gz | grep VETH CONFIG_VETH=m
ちなみに、上記表記が出ない場合の対策については実施していません。
cgroupsはubuntuなどのOSであれば、cgroup-liteをapt-getしてあげるらしいです。 Archlinuxの環境ではyaourt -S libcgroupsが必要でした。下記のコマンドは適宜読み替えてください。
$ yaourt -S libcgroups $ sudo pacman -S lxc
dockerでbuildとりあえずうまく行きました。。。
余談
zcatコマンドでカーネル設定値を確認していますが、LXCを導入する際に必要なものは他にも色々あるのではないかという疑問が浮かんだ人もいるかも知れません。どうやらあるようです。
- CONFIG_NAMESPACES
- CONFIG_CGROUPS
- CONFIG_DEVPTS_MULTIPLE_INSTANCES
- CONFIG_VETH
ここらへんも必要らしいです。一応、VETH以外もyになっていることを確認しました。 あと、VETHは仮想Ethrnetデバイスの設定らしいです。詳しくは見てないです。 また、CONFIG_VETH=mのmはmoduleの意味らしいです。詳しくは参考URLにて確認してみてください。