DockerでCIFSマウントする
cifs-utilsのインストール
1 | apt-get install -y --no-install-recommends cifs-utils |
cifs-utilsがない場合はmount: /mnt: cannot mount //xxx.xxx.xxx.xxx/xxxxxx read-only.
となる。
コンテナからcifs-utilsでマウントする例
ENTRYPOINTでCIFSをマウントするにはcifs-utils
をインストールして、mount -t cifs
でマウントする。
1 | # |
権限がない(privilegedとcapabilities)
デフォルトでDockerでmountを試みた場合、Unable to apply new capability set.
でマウントできない。
これはDockerのRuntime privilege and Linux capabilitiesに記載がある。
By default, Docker containers are “unprivileged” and cannot, for example, run a Docker daemon inside a Docker container. This is because by default a container is not allowed to access any devices, but a “privileged” container is given access to all devices (see the documentation on cgroups devices).
デフォルトではDockerコンテナはunprivileged
で動作し、デバイスへのアクセスを許可されていない。
When the operator executes docker run –privileged, Docker will enable access to all devices on the host as well as set some configuration in AppArmor or SELinux to allow the container nearly all the same access to the host as processes running outside containers on the host.
docker run --privileged
で実行したとき、privileged
状態で起動することができる。その場合、Dockerはホストすべてのデバイスにアクセス可能で、AppArmorやSELinuxの設定を行い、他のホスト上のプロセスと同じ権限を与えてしまう。
If you want to limit access to a specific device or devices you can use the –device flag. It allows you to specify one or more devices that will be accessible within the container.
--device
付きで実行すれば、特定のデバイスの利用許可を与えることができる。
In addition to –privileged, the operator can have fine grain control over the capabilities using –cap-add and –cap-drop. By default, Docker has a default list of capabilities that are kept. The following table lists the Linux capability options which are allowed by default and can be dropped.
--privileged
に加えて、--cap-add
で細かく権限を制御することができる。
docker-composeで権限付与を行う
privilegedはprivileged: true
で有効化することができる。
privilegedはすべての権限を付与するので以下の例に意味はないが、--cap-add
はcap_add
として設定することができる。
1 | …略… |