代理环境配置docker
用来用去还是台式机爽,而且懒得天天带电脑,所以想在公司电脑上配置docker环境。但是公司网络是没办法直连外部网络的,只能通过http proxy来访问外网。
首先是宿主机使用ubuntu on virtualbox,注意下网络连接方式,公司的网络策略是禁止桥接网卡,所以需要选择nat方式。
然后按照官方指南安装docker:
更新软件源:
apt-get update
但是apt是不会引用你已经配置好的环境变量HTTP_PROXY和HTTPS_PROXY的,需要单独配置apt代理:
编辑: /etc/apt/apt.conf or /etc/apt/apt.conf.d/xxx.conf
Acquire::proxy "//proxy:port/";
更新完成后按照指引安装根证书等依赖,然后需要导入GPG KEY:
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
坑爹的是这个地方不仅不读环境变量,也不使用apt的代理配置,需要直接指定一下
apt-key adv --keyserver-options http-proxy=//proxy:port/ --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
然后安装就一片坦途了,安装完成之后顺手拉个官方镜像
docker pull busybox
提示网络超时,编辑配置文件增加代理:
vim /etc/default/docker
按照说明增加http_proxy和https_proxy,重启docker服务后无效果,docker info没有体现代理信息
gg了半天找到了一个issues:
The /etc/default/docker file is only used on systems using sysvinit
and upstart (see this comment at the top of the file). Ubuntu 16.04
uses systemd, so doesn't use that file.
原来/etc/default/docker这个配置文件是sysvinit版本的配置文件,而sysvinit在ubuntu 16上被systemd替代掉了,应该使用systemd版本的配置
创建并编辑:/etc/systemd/system/docker.service.d/http-proxy.conf:
[Service]
Environment="HTTP_PROXY=//proxy:port/" "HTTPS_PROXY=//proxy:port/" "NO_PROXY=localhost,127.0.0.1"
重新加载systemd配置:
systemctl daemon-reload
重启docker服务:
systemctl restart docker