我刚刚在windows environnement(Windows 7 Pro)上安装了docker工具箱,由于企业代理,我的网络超时了。如何在docker工具箱中设置代理?
感谢您的帮助。
答案 0 :(得分:24)
我遇到了同样的问题。这是我的解决方案。
<强> ENV:强>
Win7,Docker Toolbox 17.03,cmder终端,落后于企业代理设置。
<强>解决方案:强>
在C:\ Program Files \ Docker Toolbox中,找到start.sh文件。添加以下两个代理设置:
export http_proxy="http://hostname:port/"
export https_proxy="http://hostname:port/"
至少,它对我有用。
答案 1 :(得分:7)
我对 Windows 7 有类似的问题,但是通过以下步骤解决了这个问题:
步骤1.使用以下配置创建批处理脚本C:\ Program Files \ Docker Toolbox \ kitematic_proxy.cmd
set proxy=YOUR_PROXY
SET HTTP_PROXY=%proxy%
SET HTTPS_PROXY=%proxy%
for /f %%i in ('docker-machine.exe ip default') do set DOCKER_HOST=%%i
SET NO_PROXY=%DOCKER_HOST%
set DOCKER_HOST=tcp://%DOCKER_HOST%:2376
cd Kitematic
Kitematic.exe
步骤2.从开始菜单打开Oracle虚拟机,单击显示进入命令提示符(确保Oracle Vm已启动并运行)
输入 sudo vi / var / lib / boot2docker / profile
添加此行
export HTTP_PROXY=http://your.proxy.name:8080
export HTTPS_PROXY=http://your.proxy.name:8080
使用您的代理地址&amp;端口
此链接对我有很大帮助 https://github.com/docker/kitematic/wiki/Common-Proxy-Issues-&-Fixes
注意:
答案 2 :(得分:2)
在企业代理后面的 windows 7 (docker 18.09.0)上安装docker对我来说非常复杂。这是我遵循的步骤:
choco install docker-toolbox
(警告!不要将Docker用于Windows,因为它的目标是Windows 10)docker-machine ls
为空。如果未运行,则为docker-machine rm default
)docker-machine --native-ssh create -d virtualbox --engine-env HTTP_PROXY=$HTTP_PROXY --engine-env HTTPS_PROXY=$HTTPS_PROXY default
用户身份在Powershell中运行。C:\Program Files\Docker Toolbox\start.sh
docker pull busybox
。这应该起作用。答案 3 :(得分:0)
啊!实际上,使用Docker Toolbox时,Windows部分只是在创建的虚拟机上非常薄的一层,因此我的方法是配置虚拟机本身以使一切正常运行。所以。
0)在Windows主机上设置全局环境变量
HTTP_PROXY = "http://login:password@yourproxy:8080"
HTTPS_PROXY = "http://login:password@yourproxy:8080"
请注意大写字母! (您也可以设置FTP_PROXY
和NO_PROXY
)
1)运行Docker Quickstart Terminal,它将在您的VirtualBox或任何其他名称下创建名为default
的虚拟机。还会显示新创建的VM的地址,例如
docker is configured to use the default machine with IP 192.168.99.104
2)SSH到该地址(即使用PuTTY)。登录名:docker
密码:tcuser
3)运行
echo '
{
"proxies":
{
"default":
{
"httpProxy": "http://login:password@yourproxy:8080",
"httpsProxy": "http://login:password@yourproxy:8080"
}
}
}' > /home/docker/.docker/config.json
这将强制Docker客户端(在VM上!)运行内部具有正确环境的容器。
4)因此,现在您可以在VM内部使用Docker客户端。要强制Windows docker客户端(以及docker-compose)也在运行的容器内设置正确的环境,请将与Windows主机上第3页中相同的config.json
放在C:\User\<yourhomedir>\.docker
目录中。
现在检查运行容器中的环境
docker run -ti ubuntu env
HTTPS_PROXY=http://login:password@yourproxy:8080
https_proxy=http://login:password@yourproxy:8080
HTTP_PROXY=http://login:password@yourproxy:8080
http_proxy=http://login:password@yourproxy:8080
请注意,CAPS和小写字母变量均已正确设置!
对所有内容进行最终检查是可以的:
docker run -ti ubuntu apt-get update
5)您可能面临的一个问题是,代理的地址来自网络,这是docker在创建自己的网络时使用的地址,因此在您执行docker network create
之后,它会破坏到代理的路由。因此,请确保代理地址与172.18.x.x不同。如果是这样,则通过在VM上进行另一个配置来强制docker使用另一个地址空间来创建网络
sudo -i
echo '
{
"default-address-pools": [
{"base":"172.80.0.0/16","size":24}
]
}' > /etc/docker/daemon.json
然后在Windows上依次docker-machine restart
,然后再次echo ... > /home/docker/.docker/config.json
,重新启动后它会消失。
6)不要重新启动虚拟机,需要时将其暂停。
答案 4 :(得分:0)
我在Windows 7 Docker工具箱安装中遇到问题
$ docker --version
Docker version 18.09.3, build 774a1f4eee
$ docker-compose --version
docker-compose version 1.23.2, build 1110ad01
当我尝试
docker run hello-world
我收到了
无法在本地找到图片“ hello-world:latest” C:\ Program Files \ Docker Toolbox \ docker.exe:来自守护程序的错误响应:Get https://registry-1.docker.io/v2/:net / http:等待连接时请求被取消(等待头时超过Client.Timeout)。 请参阅“ C:\ Program Files \ Docker Toolbox \ docker.exe运行--help”。
根据https://docs.docker.com/toolbox/faqs/troubleshoot/,我已在docker机器内的/var/lib/boot2docker/profile
中注册了我的企业代理:
使用
ssh
登录到虚拟机。本示例登录default
计算机。$ docker-machine ssh default docker@default:~$ sudo vi /var/lib/boot2docker/profile
然后我在profile
export "HTTP_PROXY=http://host:port"
export "HTTPS_PROXY=http://host:port"
之后,我继续说明
在文件末尾添加一个
NO_PROXY
设置,类似于下面的示例。export "NO_PROXY=192.168.*.*"
重新启动Docker。 在VM上修改
profile
后,重新启动Docker并退出计算机。docker@default:~$ sudo /etc/init.d/docker restart docker@default:~$ exit
之后,docker run hello-world
命令运行良好
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/