我正在尝试使用 docker-machine 在公司 http 代理后面的私有云(Openstack)上创建一个实例。
是否可以告诉 docker-machine 使用代理,或者我是否需要一个已经预先配置了 http_proxy env 变量的 Glance 图像?
我正在尝试使用 docker-machine 在公司 http 代理后面的私有云(Openstack)上创建一个实例。
是否可以告诉 docker-machine 使用代理,或者我是否需要一个已经预先配置了 http_proxy env 变量的 Glance 图像?
如前所述,您可以在以下位置编辑文件
$HOME\.docker\machine\machines\default\config.json
并设置 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 变量(或删除它们):
"HostOptions": {
"Driver": "",
...
"EngineOptions": {
...
"Env": [
"HTTP_PROXY=http://10.121.8.110:8080",
"HTTPS_PROXY=http://10.121.8.110:8080",
"NO_PROXY=192.168.23.4"
],
文件编辑后,您只需执行:
docker-machine provision
使用当前的 docker 机器版本,我找不到更好的方法来进行 boot2docker 中的更改(Docker/Boot2Docker: Set HTTP/HTTPS proxies for docker on OS X)
如果在 docker 机器的 /var/lib/boot2docker/profile 中手动设置代理,重启后代理设置会自动删除。
所以我必须创建一个--engine-env
设置为代理的 docker 机器
docker-machine create -d virtualbox \
--engine-env HTTP_PROXY=http://example.com:8080 \
--engine-env HTTPS_PROXY=https://example.com:8080 \
--engine-env NO_PROXY=example2.com \
proxybox
这是一个两年前的答案,docker中发生了很多变化,所以如果您仍然无法使其在代理后面工作,请阅读@Senri的答案和其他人。
文档:创建 docker 机器
可以修改现有的 docker-machine 配置以添加代理环境。可以编辑 $HOME/.docker/machine/machines//.config.json 中的 config.json。
将“HTTP_PROXY= http://example.com:8080 ”添加到 config.json 中的 Env。重新启动机器,一切就绪。
如果您已经创建了机器(VM),您可以像这样配置代理:
1- SSH into the docker dev host: docker-machine ssh dev
2- Add the following lines to /var/lib/boot2docker/profile (this file is read-only, use sudo)
export HTTP_PROXY=http://<proxy>:<port>
export HTTPS_PROXY=http://<proxy>:<port>
3- Exit the ssh session and restart the docker machine: docker-machine restart dev
从 Docker 18.09 开始,我们可以在命令行上指定环境变量,例如代理到容器,如下所示:
docker run --env HTTP_PROXY="172.10.13.14" -it myImage:latest /bin/bash
此外,我们可以通过将这些设置写入文件中来为 docker 客户端指定这些设置,~/.docker/config.json
如下所示:
{
"proxies":
{
"default":
{
"httpProxy": "http://127.0.0.1:3001",
"noProxy": "*.test.example.com,.example2.com"
}
}
}
更多信息可在docs上找到。