マニフェストリストを不安全なレジストリにプッシュする
このステップでは、マニフェストリストを不安全なレジストリにプッシュする方法を探ります。不安全なレジストリとは、TLS/SSL 証明書を使用しないレジストリで、本番環境では推奨されませんが、テストや内部ネットワークでは有用です。
デフォルトでは、Docker はレジストリへの安全な接続を要求します。不安全なレジストリにプッシュするには、Docker デーモンを構成して、特定のレジストリアドレスへの不安全な接続を許可する必要があります。
この実験では、TLS を使用せずに実行されるローカルレジストリを使用して、不安全なレジストリをシミュレートします。まず、ローカルレジストリコンテナを実行しましょう。ホストのポート 5000 をコンテナのポート 5000 にマッピングします。
docker run -d -p 5000:5000 --name registry registry:2
コンテナが実行されていることを示す、以下のような出力が表示されるはずです。
Unable to find image 'registry:2' locally
2: Pulling from library/registry
...
Status: Downloaded newer image for registry:2
a1b2c3d4e5f6...
ここで、Docker デーモンを構成して、localhost:5000
のこの不安全なレジストリを信頼する必要があります。これには、Docker デーモンの構成ファイルを変更する必要があります。このファイルの場所は異なる場合がありますが、ほとんどの Linux システムでは /etc/docker/daemon.json
です。
sudo nano
を使用してこのファイルを編集します。
sudo nano /etc/docker/daemon.json
ファイルが存在しない場合は、作成することができます。insecure-registries
キーを追加または変更して、localhost:5000
を含めます。ファイルの内容は次のようになります。
{
"insecure-registries": ["localhost:5000"]
}
ファイルを保存し、エディタを終了します(nano では Ctrl+X、Y、Enter)。
構成を変更した後、変更を有効にするには Docker デーモンを再起動する必要があります。
sudo systemctl restart docker
これで、マニフェストリストに不安全なレジストリアドレスを付けてプッシュできます。最初のステップで作成した my-alpine:latest
マニフェストリストを使用します。
docker manifest create localhost:5000/my-alpine:latest alpine:latest arm64v8/alpine:latest
docker manifest push localhost:5000/my-alpine:latest
レジストリが不安全であっても、プッシュが成功したことを示す出力が表示されるはずです。
Pushed manifest list localhost:5000/my-alpine:latest
これにより、Docker デーモンを構成した後、マニフェストリストを不安全なレジストリにプッシュする方法が示されます。