我正在尝试使用docker-machine在公司http代理后面的私有云(Openstack)上创建实例。
是否可以告诉docker-machine使用代理,或者我是否需要使用http_proxy env变量预先配置一眼图片?
答案 0 :(得分:32)
如前所述,您可以在
编辑文件$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
答案 1 :(得分:24)
使用当前的docker机器版本,我找不到更好的方法来进行更改,如boot2docker(Docker/Boot2Docker: Set HTTP/HTTPS proxies for docker on OS X)
如果在docker machine中的/ var / lib / boot2docker / profile中手动设置代理,重启后,代理设置将自动删除。
所以我必须创建一个为--engine-env
设置代理
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's answer。
答案 2 :(得分:5)
可以修改现有的docker-machine配置以为代理添加环境。可以编辑$ HOME / .docker / machine / machines // .config.json中的config.json。
在config.json中将“HTTP_PROXY = http://example.com:8080”添加到Env。重新启动机器,你就完全了。
答案 3 :(得分:2)
如果您已经创建了计算机(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
答案 4 :(得分:1)
从Docker 18.09开始,我们可以在命令行上指定环境变量,例如代理到容器的容器,例如:
docker run --env HTTP_PROXY="172.10.13.14" -it myImage:latest /bin/bash
此外,我们可以通过将其写入~/.docker/config.json
文件中来将这些设置指定给docker客户端,如下所示:
{
"proxies":
{
"default":
{
"httpProxy": "http://127.0.0.1:3001",
"noProxy": "*.test.example.com,.example2.com"
}
}
}
更多信息,请访问docs。