7.3.2. Docker 外部レジストリーのホワイトリストおよびブラックリスト
Docker は、registries
および block_registries
フラグを docker
デーモンに設定して、外部レジストリーからの操作をブロックするように設定できます。
手順
許可されるレジストリーを
registries
フラグの付いた/etc/containers/registries.conf
ファイルに追加します。registries: - registry.redhat.io - my.registry.example.com
注記docker.io
レジストリーは同じ方法で追加できます。残りのレジストリーをブロックします。
block_registries: - all
古いバージョンの残りのレジストリーをブロックします。
BLOCK_REGISTRY='--block-registry=all'
docker
デーモンを再起動します。$ sudo systemctl restart docker.service
docker
デーモンの再起動により、docker
コンテナーが再起動します。この例では、
docker.io
レジストリーがブラックリストに入れられているため、そのレジストリーに関連するすべての操作が失敗します。$ sudo docker pull hello-world Using default tag: latest Trying to pull repository registry.redhat.io/hello-world ... Trying to pull repository my.registry.example.com/hello-world ... Trying to pull repository registry.redhat.io/hello-world ... unknown: Not Found $ sudo docker pull docker.io/hello-world Using default tag: latest Trying to pull repository docker.io/library/hello-world ... All endpoints blocked.
ファイルを再び変更し、サービスを再起動して
docker.io
をregistries
変数に追加します。registries: - registry.redhat.io - my.registry.example.com - docker.io block_registries: - all
または
ADD_REGISTRY="--add-registry=registry.redhat.io --add-registry=my.registry.example.com --add-registry=docker.io" BLOCK_REGISTRY='--block-registry=all'
Docker サービスを再起動します。
$ sudo systemctl restart docker
イメージがプルできる状態であることを確認するには、以下を実行します。
$ sudo docker pull docker.io/hello-world Using default tag: latest Trying to pull repository docker.io/library/hello-world ... latest: Pulling from docker.io/library/hello-world 9a0669468bf7: Pull complete Digest: sha256:0e06ef5e1945a718b02a8c319e15bae44f47039005530bc617a5d071190ed3fc
外部レジストリーを使用する必要がある場合 (レジストリーを使用する必要のあるすべてのノードホストの
docker
デーモン設定ファイルを変更する場合など)、これらのノードでブラックリストを作成し、悪意あるコンテナーが実行されるのを防ぐことができます。Ansible インストーラーを使用する場合、これは、Ansible ホストファイルの
openshift_docker_additional_registries
およびopenshift_docker_blocked_registries
変数を使用して設定できます。openshift_docker_additional_registries=registry.redhat.io,my.registry.example.com openshift_docker_blocked_registries=all