このドキュメントで説明されているソフトウェアはサポートされていないか、拡張サポートが提供されています。
現在サポートされているリリースにアップグレードすることをお薦めします。
次の手順は、バージョン1.10以上のDockerに適用されます。
Dockerコンテナ内で実行されているプロセスに、ホスト・システムの代替ユーザー・ネームスペース・マッピングを使用した実行を強制するには、--userns-remapオプションをDocker Engineの起動パラメータとして使用します。 この機能により、ホスト・システムにセキュリティのレイヤーが追加されます。 各コンテナ内で実行されているプロセスは、/etc/subuid
および/etc/subgid
で定義されている代替マッピングのUIDおよびGIDを使用して実行されます。 shadow-utilsプロジェクトには、Linuxカーネル内のユーザー・ネームスペースの機能である従属ユーザー・マッピングが用意されています。 詳細は、https://docs.docker.com/edge/engine/reference/commandline/dockerd/#daemon-user-namespace-optionsを参照してください。
ユーザー・ネームスペース・マッピングを実装する手順:
/etc/subuid
ファイルを作成して編集します。Dockerのドキュメントでは、このファイルを自動的に作成して移入することを提案していますが、この機能は、usermodコマンドで使用できるコードに依存しており、現在このコードはOracle Linuxに組み込まれていません。 このファイルがない場合は手動で作成し、必要なユーザー・マッピングを移入します。
user
:start_uid
:uid_count
デフォルトのユーザー・ネームスペース再マッピングを構成する場合は、
dockremap
ユーザーのエントリを追加します。 あるいは、この目的に使用する予定の権限のないユーザーのエントリを追加します。 次に例を示します。dockremap:100000:65536
前述の例では、dockremapは、再マッピングに使用される権限のないシステム・ユーザーです。100000は、コンテナ内のプロセスの実行に使用される使用可能なUIDの範囲における最初のUIDです。65536は、コンテナで使用されるUIDの最大数です。 このエントリ例に基づいて、rootユーザーとしてコンテナ内で実行されているプロセスは、ホスト・システムでUID 100000を使用して実行されるように起動されます。 コンテナ内のプロセスがUIDが500のユーザーとして実行されると、ホスト・システムでは、UID 100500で実行されます。
/etc/subgid
ファイルを作成して編集します。 ユーザーIDマッピングに適用されるのと同じ原則がグループIDマッピングに適用されます。デフォルトのユーザー・ネームスペース再マッピングを構成する場合は、
dockremap
グループのエントリを追加します。 あるいは、この目的に使用する予定のグループのエントリを追加します。 次に例を示します。dockremap:100000:65536
/etc/sysconfig/docker
を編集し、次のように関連するremapパラメータをOPTIONS
行の最後に追加して、--userns-remapパラメータを有効にして実行されるようにdocker
サービスを構成します。# /etc/sysconfig/docker # Modify these options if you want to change the way the docker daemon runs OPTIONS='--userns-remap=
default
--userns-remapを
default
に設定すると、Dockerによってdockremap
という名前のユーザーおよびグループが自動的に作成されます。dockremap
ユーザーおよびグループのエントリが/etc/subuid
および/etc/subgid
に存在する必要があります。 あるいは、システムにすでに存在する別の権限のないユーザーおよびグループを使用して実行されるように、--userns-remapオプションを設定します。 これを選択した場合は、/etc/subuid
および/etc/subgid
ファイルでdockremap
ユーザーを適切なユーザー名およびグループ名と置き換えます。サービス構成の変更をアクティブにするには、
docker
サービスを再起動します:#
service docker restart
Docker Engineでは、コンテナの実行者やコンテナ内でのコマンドの実行者に関係なく、同じユーザー・ネームスペース再マッピング・ルールがすべてのコンテナに適用されます。