Docker プライベートリジストリからイメージをプルする時、https でないので怒られる時の対応策 (Ubuntu, mac)


概要

プライベートリジストリにdocker image を保存して、
チームや個人でもイメージをシェアしている例はいくつかあると思います。

そんな際に、例えばそのホストが

xxx.xxx.xxx:5000

だったとします。
そこから 

docker pull xxx.xxx.xxx:5000/test

を用いてイメージをプルしようとした時、

Error response from daemon: Get https://xxx.xxx.xxx:5000/v2/: http: server gave HTTP response to HTTPS client

と言われたときの対処法です。

対応策(mac)

Mac OS ではタスクバーの鯨アイコンから Preferences > Daemon > Advanced を選択することで可能です。)
このjson形式の設定に
{
“insecure-registries”:[“xxx.xxx.xxx:5000”]
}
この1行を追記した後、docker をリスタートすると、プルできるようになります。

対応策(Ubuntu)

$grep ExecStart /lib/systemd/system/docker.service

を実行してください。

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

と表示される場合、

$sudo vim /lib/systemd/system/docker.service

を実行し、

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=/xxx.xxx.xxx:5000

となるように、
--insecure-registy 以下を追加してください。

この後、

$sudo systemctl daemon-reload
$sudo service docker stop
$sudo service docker start

を実行し、プルをもう一度試してみてください。