docker代理配置和搭建docker个人仓库(mac)
使用的docker-desktop版本:2.2.0.4
使用的docker个人仓库是用ubuntu搭建的
问题1:代理下push/pull不了外网(setting里配置一下代理)
问题2:搭建个人仓库后,向仓库push,pull失败
pull/push 失败的原因可能有两个,一个是因为没有设置insecure-registries,另一个是因为代理的原因。
原因一:代理设置错误
首先要弄清两个IP地址,一个是你的主机(假设192.168.0.1),一个是仓库的地址(假设192.168.0.2)。
然后你要知道,在代理的情况下你push和pull都会使用你的代理。
而你的私人仓库是架在本地的,如果公司网络有限制,可能会导致你的代理不能连接你的主机。
所以你在push/pull 仓库的镜像时,需要取消代理,让docker直接通过内网进行访问。
解决方法就是将no-proxy部分补上
比如你的服务器是192.168.0.2,你就添加一个192.168.0.2
原因二:没有设置insecure-registries
没有设置insecure-registries会导致连接服务器仓库被拒
解决方法是在setting里补上
如果你要pull的的仓库是192.168.0.2,就写上192.168.0.2:5000(5000是你run个人仓库写的端口地址)。需要注意的是,如果有多个地址不能有额外的“,”号。
mac通过vim修改配置地址:
/Users/username/.docker/daemon.json
# (username是你电脑用户名)
mac 查看代理配置地址是:
/etc/systemd/system/docker.service.d/
# 该目录下有两个代理配置文件 http-proxy.conf 和 https-proxy.conf
问题3:
本地搭建个人仓库后,向本地push/pull 失败
原因有两个,同样是insecure-registries没有设置,和代理(no-proxy)没有配置好。
解决方法是将电脑的地址填到insecure-registries和no-proxy中。
这次搭建我使用的服务器是ubuntu,顺便把ubuntu的代理配置贴一下出来。
ubuntu docker 代理配置
代理文件位置
# Ubuntu daemon.json的位置
/etc/docker/daemon.json
# 代理文件位置
/etc/systemd/system/docker.service.d/
# 该目录下有http-proxy.conf 和 https-proxy.conf两个文件,如果没有就vim一个
# http-proxy.conf 配置
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/"
# https-proxy.conf 配置
[Service]
Environment="HTTPS_PROXY=https://proxy.example.com:443/"
这样配置后代理会生效,但是可能会导致本地push/pull失败
同样是上面的两个文件加上no-proxy配置
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1"
# 如果你需要向你的服务器(192.168.0.2) push镜像
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1, 192.168.0.2"
关于daemon.json文件
这个文件除了配置安全访问地址外,还可以配置镜像地址(加速镜像下载速度)
1 {
2 "registry-mirrors":[
3 "http://registry.docker-cn.com",
4 "http://hub-mirror.c.163.com",
5 "http://docker.mirrors.ustc.edu.cn"
6 ],
7 "insecure-registries":["192.168.0.2:5000","127.0.0.1"]
8 }
暂且先把遇到的想到的都贴在这里了。以后有新的问题再补充。
官方参考地址:https://docs.docker.com/config/daemon/systemd/