DockerのOperation not permittedというエラーに対応する

概要

Docker Composeを使ってgolangのtest実行していたら、Operation not permittedというエラーに遭遇した。

対応

Docker Documentation - runtaime-privilege-and-linux-capabilities

Dockerコンテナの特権設定をいじると解決する。

上記だとセキュリティ的にどうなのかイマイチよくわかっていないので、もう少し権限を絞るような設定にした。

cap_addはLinux capabilitiesを追加するオプションで、ここではsystem administration operationsの権限を追加している。

Linux capabilitiesはスーパーユーザーの権限を細分化する機能。

seccompはLinuxカーネルのシステムコール発行の制限をするセキュリティ関連の機能。

ここでは、unconfined、無効化の設定をしている。

unconfinedは直訳すると"監禁されていない"という意味らしい。

所感

speakerdeck - コンテナ完全に理解した

コンテナことは前にちらっと勉強したが、まだまだ理解が浅い。

参考