web-dev-qa-db-ja.com

カーネルモジュールをロードするDocker

カーネルモジュールxfsprogsをインストールしようとしました。コンテナー内に正常にインストールされました。それは本当に驚くべきことですが、lsmodはこのモジュールをコンテナ内またはホストシステムにリストしません。コンテナに新しいカーネルモジュールをロードするにはどうすればよいですか?(CentOSコンテナ、Ubuntuホスト)

12
user4725754

コンテナーは、システムコールを通じてカーネルと対話し、コンテナー内のカーネルまたはカーネルモジュールのどの部分も含みません。これが、軽量で持ち運びできるように設計されたコンテナの理由の1つです。また、xfsprogsはユーザー空間プログラムであり、カーネルモジュールではありません。

新しいカーネルモジュールをコンテナーにロードするにはどうすればよいですか(CentOSコンテナー、Ubuntuホスト)

モジュールは、Dockerコンテナーからではなく、ホストOSにロードする必要があります。

12
askb
  • コンテナーを特権モードで実行する(--privileged)
  • すべての機能を追加(--cap-add = ALL)
  • ホスト/ lib/modulesをコンテナーにマウントします(-v/lib/modules:/ lib/modules)

docker run --name container_name --privileged --cap-add=ALL -d -v /dev:/dev -v /lib/modules:/lib/modules image_id

ここでは、すべてのLinux機能が追加されているため、機能を調整できます。

13
Tinkal Gogoi

Falco は、開始プロセスの一部としてカーネルモジュールをロードするコンテナーの例です。

docker run -i -t --name falco --privileged \
  -v /var/run/docker.sock:/Host/var/run/docker.sock \
  -v /dev:/Host/dev \
  -v /proc:/Host/proc:ro \
  -v /boot:/Host/boot:ro \
  -v /lib/modules:/Host/lib/modules:ro \
  -v /usr:/Host/usr:ro \
  sysdig/falco
1
Edward Anderson