Docker registryというDocker Hubをプライベート環境に構築できるものがあります。

環境


  • Docker registry 2.3.0
  • Docker for Windows 17.12.0-ce-win47

上記で確認しています。

httpでpullするとエラーが出る


このDocker registryはhttpもしくはhttpsで通信します。運用にもよると思いますが、ネットワークが閉じている場合はhttpのケースも多いと思います。構築したDocker registryからイメージをpullした場合、httpの場合は下記のようなエラーが出ます。

1
2
3
//下記はサンプルです。実際は構築ホストやイメージ名が表示されます。
Pulling sample-image (example.com:5000/sample/v:1.2)...
ERROR: Get https://example.com:5000/v2/: http: server gave HTTP response to HTTPS client

対応


Docker for Windows側で設定を行う必要があります。「Daemon -> Insecure registries」に構築したDocker registryのアドレスを入力します。

誤ってプロトコルまで入力してしまったら…

この時にプロトコル(http)は指定しなくてよいです。誤って入力した場合は下記のようにエラーが出ます。しかもこのままApplyできてしまいます。

このままApplyした場合は、なぜか修正ができないので上のトグルを「Adbanced」に変更します。すると、JSONでの設定が表示されるので、プロトコルを記入してしまった値を削除します。下記の場合だとhttp://example2.com:5000を削除します。

再起動する


後はApplyを選択すると再起動が走ります。

この後、pullできるようになります。