備忘録、はじめました。

作業したこと忘れないようにメモっておきます。

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にて確認してみてください。

参考URL