Windows環境(Windows 7 Pro)にdockerツールボックスをインストールしましたが、entrepriseプロキシが原因でネットワークがタイムアウトしました。 dockerツールボックスでプロキシを設定するにはどうすればよいですか?
ご協力いただきありがとうございます。
同じ問題が発生しました。これが私の解決策です。
環境:
Win7、Docker Toolbox 17.03、cmderターミナル、エンタープライズプロキシ設定の背後。
解決策:
c:\ Program Files\Docker Toolboxで、start.shファイルを見つけます。次の2つのプロキシ設定を追加します。
export http_proxy="http://hostname:port/"
export https_proxy="http://hostname:port/"
少なくとも、私にとってはうまくいきます。
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仮想マシンを開き、Showをクリックしてコマンドプロンプトに移動します(Oracle Vmが稼働中であることを確認してください)
enterSudo vi/var/lib/boot2docker/profile
この行を追加
export HTTP_PROXY=http://your.proxy.name:8080
export HTTPS_PROXY=http://your.proxy.name:8080
プロキシアドレスとポートを使用する
このリンクは私を大いに助けます https://github.com/docker/kitematic/wiki/Common-Proxy-Issues-&-Fixes
注意:
エンタープライズプロキシの背後にあるwindows 7(docker 18.09.0)にdockerをインストールすることは、私にとって非常に複雑でした。私が従った手順は次のとおりです。
choco install docker-toolbox
(警告!Windows 10を対象としているため、WindowsにはDockerを使用しないでください)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
。C:\Program Files\Docker Toolbox\start.sh
docker pull busybox
。これは動作するはずです。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 run --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/
@ rsb2097がPCを再起動するたびに言及したように、Docker Machineは/var/lib/boot2docker/profile
の設定を失います。私も同じ問題に直面しており、これを回避する方法がわかりませんが、これらの設定をより簡単に記述するスクリプトを作成しました。
これは、Dockerマシンを停止せずにPCをシャットダウンしたために起こると考えました(VirtualBoxは、シャットダウン時にアクティブな接続があると言います)。 docker-machine stop
を試しましたが、役に立ちません。
その結果、PuTTYのAddDockerMachineProxy.cmd
を使用してプロキシ設定を書き込むplink.exe
スクリプトを作成しました( https://www.chiark.greenend.org.uk/~sgtatham/PuTTY/latest。 html )。
使用法
Docker Quickstart Terminal
を実行すると、次の出力があります。
Starting "default"...
(default) Check network to re-create if needed...
(default) Windows might ask for the permission to configure a dhcp server.
Sometimes, such confirmation window is minimized in the taskbar.
(default) Waiting for an IP...
Machine "default" was started.
Waiting for SSH to be available...
Detecting the provisioner...
Started machines may have new IP addresses.
You may need to re-run the `docker-machine env` command.
Regenerate TLS machine certs?
Warning: this is irreversible. (y/n): Regenerating TLS certificates
Waiting for SSH to be available...
Detecting the provisioner...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
AddDockerMachineProxy.cmd
スクリプトを実行します(plink.exe
は%PATH%
になければなりません):
@echo off
echo Was "Docker Quickstart Terminal" run after the reboot to init the machine?
echo If not this script fails.
pause
set "exePlink=plink.exe"
set "connectionString=-pw tcuser [email protected]"
echo Profile BEFORE:
call "%exePlink%" %connectionString% cat /var/lib/boot2docker/profile
if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
echo APPENDING PROXY
call "%exePlink%" %connectionString% Sudo bash -c "'echo export \"HTTP_PROXY=http://Host:port\">> /var/lib/boot2docker/profile'"
if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
call "%exePlink%" %connectionString% Sudo bash -c "'echo export \"HTTPS_PROXY=http://Host:port\">> /var/lib/boot2docker/profile'"
if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
call "%exePlink%" %connectionString% Sudo bash -c "'echo export \"NO_PROXY=192.168.*.*\">> /var/lib/boot2docker/profile'"
if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
echo Profile AFTER:
call "%exePlink%" %connectionString% cat /var/lib/boot2docker/profile
if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
echo Restart docker service:
call "%exePlink%" %connectionString% Sudo /etc/init.d/docker restart
if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
echo Testing connection
call docker image pull hello-world || ( echo ERROR: docker image pull is failed !!! & goto BadExit )
echo Done!
exit /b 0
:BadExit
echo ERROR !!!
exit /b 1
あ!実際、Docker Toolboxのウィンドウ部分は、作成された仮想マシン上の非常に薄いレイヤーなので、私の方法は、すべてが機能するように仮想マシン自体を構成することです。そう。
0)Windowsホストマシンでグローバル環境変数を設定する
HTTP_PROXY = "http://login:password@yourproxy:8080"
HTTPS_PROXY = "http://login:password@yourproxy:8080"
大文字に注意してください! (FTP_PROXY
およびNO_PROXY
も設定できます)
1)Dockerクイックスタートターミナルを実行します。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
これにより、(VM上の)docker clientは、内部で正しいenvを使用してコンテナーを実行します。
4)これで、VM内でdocker clientを使用できます。 Windows Dockerクライアント(およびdocker-compose)に、実行中のコンテナ内に正しいenvを設定するように強制するには、Windowsホストマシンのp.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)直面する可能性のある問題の1つは、プロキシのアドレスがネットワークからのものであり、ドッカーが独自のネットワークを作成するときに使用するため、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
その後、dockerd /etc/init.d/docker restart
を再起動します
6)仮想マシンを再起動せず、必要に応じて一時停止します。