很多时候,我们在部署应用时需要从私有的镜像仓库中拉取镜像,Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,这样就会导致登录私有镜像仓库或拉取私有镜像时报如下的错误:
docker login -u myUsername -p myPassword http://myIP:8080
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://10.253.51.95:18080/v2/: http: server gave HTTP response to HTTPS client
修改该或者新建/etc/docker/daemon.json
添加下面这条语句:
{ "insecure-registries":["myIP:8080"] }
重启docker服务
systemctl restart docker
有时会存在,添加上述的配置后重启docker会失败,去掉就可以重启成功
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
这时,需要查看一下/ect/systemd/system/docker.service的配置,如下,把 --insecure-registry 去掉,然后重新启动docker就可以成功
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=10.154.88.99
systemctl daemon-reload
systemctl restart docker
docker login -u myUsername -p myPassword http://myIP:8080
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded