代理环境配置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

标签: docker, ubuntu, proxy, virtualbox

添加新评论