web-dev-qa-db-ja.com

Dockerツールボックスでプロキシを設定する方法は?

Windows環境(Windows 7 Pro)にdockerツールボックスをインストールしましたが、entrepriseプロキシが原因でネットワークがタイムアウトしました。 dockerツールボックスでプロキシを設定するにはどうすればよいですか?

ご協力いただきありがとうございます。

19
Corinne Kubler

同じ問題が発生しました。これが私の解決策です。

環境:

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/"

少なくとも、私にとってはうまくいきます。

25
ShuSon

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が稼働中であることを確認してください)

enter image description here

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

注意:

  1. プロキシ設定の例外リストに192.168.99.100 ipを追加することを忘れないでください(inetcpl.cplを使用)
  2. HTTP_PROXYとHTTPS_PROXYをユーザー変数に追加することを忘れないでください(詳細設定->環境変数)
  3. PCを再起動することを忘れないでください
7
mnhmilu

エンタープライズプロキシの背後にあるwindows 7(docker 18.09.0)にdockerをインストールすることは、私にとって非常に複雑でした。私が従った手順は次のとおりです。

  1. windows環境でHTTP_PROXY変数を設定します(HTTP_PROXY = http:// your_proxy:port
  2. インストーラーでdockerツールボックスをインストールするか、管理者としてpowershellで実行します:choco install docker-toolbox(警告!Windows 10を対象としているため、WindowsにはDockerを使用しないでください)
  3. 以前の試行で作成された以前のVMが存在しないことを確認してください(docker-machine lsは空でなければなりません。実行されない場合:docker-machine rm default
  4. powerShellでユーザーとして実行:docker-machine --native-ssh create -d virtualbox --engine-env HTTP_PROXY=$HTTP_PROXY --engine-env HTTPS_PROXY=$HTTPS_PROXY default
  5. 実行C:\Program Files\Docker Toolbox\start.sh
  6. docker pull busybox。これは動作するはずです。
3
Mapad

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にエンタープライズプロキシを登録しました。

  1. 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"

その後、私は指示を続けました

  1. 以下の例のように、NO_PROXY設定をファイルの最後に追加します。

      export "NO_PROXY=192.168.*.*"
    
  2. 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/

PCの再起動後に設定が失われる

@ 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 )。

使用法

  1. PCを再起動します。
  2. 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...
    
  3. 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
    
1
and1er

あ!実際、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.jsonC:\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)仮想マシンを再起動せず、必要に応じて一時停止します。

0