このドキュメントで説明されているソフトウェアはサポートされていないか、拡張サポートが提供されています。
現在サポートされているリリースにアップグレードすることをお薦めします。

4.2.2 機能の制御およびコンテナにホスト・デバイスの使用を許可する方法

--privileged=trueオプションをdocker createまたはdocker runに指定すると、コンテナはホスト上のすべてのデバイスにアクセスできるので、セキュリティ・リスクを招く可能性があります。 より正確に制御するには、次のようにバージョン1.2.0以上のDockerで--cap-addオプションと--cap-dropオプションを使用して、コンテナの機能を制限します。

[root@host ~]# docker run --cap-add=ALL --cap-drop=NET_ADMIN -i -t --rm oraclelinux:6 /bin/bash
[root@9e9a632f6e92 /]# ip route del default
RTNETLINK answers: Operation not permitted

この例では、NET_ADMIN以外のすべての機能をコンテナに付与し、コンテナがネットワーク管理操作を実行できないようにします。 詳細は、capabilities(7)マニュアル・ページを参照してください。

ホスト上の個別のデバイスのみをコンテナで使用できるようにするには、--deviceオプションを使用してdocker run (バージョン1.2.0以上のDockerの場合)およびdocker create (バージョン1.3.0以上の場合)を実行します。

--device=host_devname[:container_devname[:permissions]]

host_devnameはホスト・デバイスの名前です。

container_devnameはコンテナ内のデバイスの名前に対するオプション名です。

permissionsは次のコードの組合せで、デバイスに対するコンテナの権限を指定します(オプション)。

m

mknod権限を付与します。 たとえば、mknodを使用すると、デバイス・ファイルの権限ビットまたはSELinuxコンテキストを設定できます。

r

読取り権限を付与します。

w

書込み権限を付与します。 たとえば、mkfsなどのコマンドを使用して、デバイスをフォーマットできます。

たとえば、--device=/dev/sdd:/dev/xvdd:rは、ホスト・デバイス/dev/sddをデバイス/dev/xvddとして読取り専用権限でコンテナが使用できるようにします。

警告

システムから簡単に取り外せるブロック・デバイスは、信用できないコンテナに対して使用可能にしないでください。