企業のファイアウォールの背後にある Windows システムで Docker を実行するにはどうすればよいですか? 質問する

企業のファイアウォールの背後にある Windows システムで Docker を実行するにはどうすればよいですか? 質問する

次のチュートリアルに従って、動作する Docker インストールを取得しようとしています。http://docs.docker.io/en/latest/installation/windows/

これまでのところ、手動​​でダウンロードしたリポジトリを使用して VM を実行できました (「git conf --global http.proxy ...」でプロキシを設定した後でも、「git clone」が会社のプロキシの背後では機能しなかったため、GitHub リンクをたどって ZIP ファイルとしてダウンロードしました。ユーザー名とパスワードを入力したにもかかわらず、認証 407 を要求し続けました)。

docker run busybox echo hello world現在は、「 」(セクション「Docker の実行」)を使用する状態です。

これを実行すると、最初にDockerがインストールされていないというメッセージが表示されます(チュートリアルの下部に表示)。その後、 でインストールした後apt-get install docker「セグメンテーション違反または重大なエラーが発生しました。コアをダンプして中止します。」

今、何ができるでしょうか? これは、Docker を使用していないためgit cloneか、Docker のインストールに問題があるためでしょうか? どこかで読んだのですが、apt-get install docker必要な Docker ではなく、何らかの GNOME ツールがインストールされます。適切なツールを取得するために、apt-request を指定できるでしょうか?

ベストアンサー1

企業プロキシの背後にある Windows Boot2Docker

(コンテキスト: 2015 年 3 月、Windows 7、企業プロキシの背後)

TLDR; GitHubプロジェクトを参照VonC/b2d:

クローンを作成して:

  • ..\env.batに従って設定しますenv.bat.template
  • 必要なエイリアスを「profile」ファイルに追加します。
  • 実行してsenv.batくださいb2d.bat

boot2dockerすると、次の内容を含む適切にカスタマイズされた環境になります。

  • と入力すると、企業のプロキシの背後でインターネットにアクセスできる ssh セッションが開始されますdocker search/pull
  • apt-get update/installDockerfiles は、 を実行し、 を入力すると、企業プロキシの背後でインターネットにアクセスできるようになりますdocker build

インストールと最初の手順

ワークステーションの管理者であれば、以下を実行できます。Windowsにboot2dockerをインストールする
現在、以下のものが付属しています。

  • Boot2Docker 1.5.0 (Docker v1.5.0、Linux v3.18.5)
  • Boot2Docker 管理ツール v1.5.0
  • バーチャルボックスv4.3.20-r96997
  • msysGit v1.9.5-プレビュー20141217

インストールしたら、次の操作を行います。

  • c:\path\to\Boot2Docker For Windows\あなたの%PATH%
  • (一度):boot2docker init
  • boot2docker start
  • boot2docker ssh
  • と入力しexitて ssh セッションを終了し、boot2docker ssh再度ログインします。入力したコマンドの履歴は保存されます。
  • VMを閉じる​​場合は、boot2docker stop

実際にできる見るboot2docker startVirtual Box GUI を開いて、DOS cmd セッションに入力するか、または VM を起動または停止しますstop


ホストとプロキシ: Windows => Boot2Docker => Docker コンテナー

理解すべき主なポイントは2つのホストを管理する必要があります:

  • あなたのWindowsワークステーションはホストLinux タイニーコアコンテナを定義して実行するためにVirtualBoxによって実行されます
    %HOME%\.boot2docker\boot2docker.iso=>
    . %USERPROFILE%\VirtualBox VMs\boot2docker-vm\boot2docker-vm.vmdk)、
  • boot2docker Linux Tiny Coreはホストあなたのコンテナあなたが走るだろう。

の観点からプロキシつまり、

  • Windows ホストではHTTP_PROXY、、HTTPS_PROXYおよびNO_PROXY環境変数が設定されている必要があります (おそらく既に設定されているでしょう。たとえば、Virtual Box では、これらを使用して Virtual Box の新しいバージョンを検出できます)。
  • Tiny Core ホストではhttp_proxy、次の項目に対して、https_proxyおよびno_proxy(Linux 環境では大文字と小文字に注意) が設定されている必要があります。
    • Dockerサービスイメージを照会/ロードできるようにします (例: docker search nginx)。
      設定されていない場合は、次のdocker pullが取得されますdial tcp: lookup index.docker.io: no such host
      これは新しいファイルで設定されます/var/lib/boot2docker/profile。 でありprofile、 ではありません.profile
    • Dockerアカウント/home/docker/.ashrc(インターネットアクセスを必要とする他のコマンド(docker以外)を実行する必要がある場合は、で設定します)
    • 任意のDockerfile作成します (または、次の行はRUN apt-get update、たとえば を取得しますCould not resolve 'http.debian.net')。
      つまり、インターネット アクセスを必要とするコマンドENV http_proxy http://...の前に、まず行を追加する必要があります。RUN

設定すると良いのは次no_proxyの通りです。

.company,.sock,localhost,127.0.0.1,::1,192.168.59.103

.company内部サイトの場合は、' ' に会社のドメイン名を入れます)


データの永続性?フォルダ共有を使用する

もう一つ理解すべき点はboot2dockerはTiny Coreを使用します、小さなLinuxディストリビューション(.isoファイルはわずか26MBです)。
そしてTiny Coreは永続性を提供しない(いくつかの技術的なフォルダを除く):~/.ashrcすべての好みの設定とエイリアスで変更した場合...次はboot2docker stop / boot2docker start復元されます清らかなLinux環境、あなたの修正が消えて

VirtualBoxにOracle_VM_VirtualBox_拡張パックダウンロードして、Virtual Box / ファイル / 設定 / 拡張機能 /Oracle_VM_VirtualBox_Extension_Pack-4.x.yy-zzzzz.vbox-extpackファイルの追加に追加します。

としてboot2dockerに文書化されている、Tiny Core sshセッションから/c/Users/<yourLogin>(つまり%USERPROFILE%Virtual Boxによって共有される)にアクセスできるようになります。


ポートリダイレクト? コンテナの場合そしてVirtualBox VM用

最後に理解すべき点はデフォルトではポートはエクスポートされません:

  • コンテナのポートはTiny Coreホストからは見えません(-p 80:80コンテナの80ポートをLinuxセッションの80ポートに公開するには、たとえばを使用する必要があります)
  • あなたのTiny Cort ポートは、デフォルトでは Virtual Box VM からエクスポートされません。: コンテナーが Tiny Core 内から表示されていても、Windows ブラウザーでは表示されません。http://127.0.0.1「 」は動作しませんThe connection was reset

最初のポイントについては、docker run -it --rm --name my-apache-app -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4が含まれていないと機能しません-p 80:80

2番目のポイントでは、エイリアスを定義しdoskey vbm="c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" $*、次の操作を実行します。 - 仮想ボックス「boot2docker-vm」がまだ起動していない場合は、 を使用しますvbm modifyvm- 仮想ボックス「boot2docker-vm」が起動している場合は、すでに開始、使用vbm controlvm

通常、boot2docker セッション中に、ポート 80 が Windows からアクセスできないことに気付いた場合:

vbm controlvm "boot2docker-vm" natpf1 "tcp-port80,tcp,,80,,80";
vbm controlvm "boot2docker-vm" natpf1 "udp-port80,udp,,80,,80";

そうして初めて、私はアクセスできるhttp://127.0.0.1


永続設定: docker サービスにコピーそしてDockerアカウント

簡単に使用するためにboot2docker

  • Windowsでフォルダを作成する%USERPROFILE%\prog\b2d
  • .profile(Windowsでは直接、 )に を追加し%USERPROFILE%\prog\b2dあなたの設定とエイリアス。

たとえば(オリジナルを修正しました/home/docker/.ashrc):

# ~/.ashrc: Executed by SHells.
#
. /etc/init.d/tc-functions
if [ -n "$DISPLAY" ]
then
        `which editor >/dev/null` && EDITOR=editor || EDITOR=vi
else
        EDITOR=vi
fi
export EDITOR

# Alias definitions.
#
alias df='df -h'
alias du='du -h'

alias ls='ls -p'
alias ll='ls -l'
alias la='ls -la'

alias d='dmenu_run &'
alias ce='cd /etc/sysconfig/tcedir'

export HTTP_PROXY=http://<user>:<pwd>@proxy.company:80
export HTTPS_PROXY=http://<user>:<pwd>@proxy.company:80
export NO_PROXY=.company,.sock,localhost,127.0.0.1,::1,192.168.59.103

export http_proxy=http://<user>:<password>@proxy.company:80
export https_proxy=http://<user>:<password>@proxy.company:80
export no_proxy=.company,.sock,localhost,127.0.0.1,::1,192.168.59.103

alias l='ls -alrt'
alias h=history
alias cdd='cd /c/Users/<user>/prog/b2d'

ln -fs /c/Users/<user>/prog/b2d /home/docker

(192.168.59.103 は通常、 によって返される IP ですboot2docker ip)


すべてをまとめて boot2docker セッションを開始します。b2d.bat

  • b2d.bat以下のスクリプトを作成して追加し%PATH%ます。
    • 始めるboot2docker
    • docker再起動されるサービスとユーザー アカウントの両方に対して適切なプロファイルをコピーします/home/docker
    • 対話型SSHセッションを開始する

あれは:

doskey vbm="c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" $*
boot2docker start
boot2docker ssh sudo cp -f /c/Users/<user>/prog/b2d/.profile /var/lib/boot2docker/profile
boot2docker ssh sudo /etc/init.d/docker restart
boot2docker ssh cp -f /c/Users/<user>/prog/b2d/.profile .ashrc
boot2docker ssh

設定を定義して新しいboot2dockerセッションに入るにはその通り必要に応じて、次のように入力するだけです。

b2d

これで準備完了です:


最終結果:

  • a はdocker search xxx動作します(インターネットにアクセスできます)
  • どれでもdocker build動作します(指示があればインターネットにアクセスできますENV http_proxy
  • の任意の Windows ファイルは、%USERPROFILE%\prog\b2dから直接変更できます~/b2d
    または、( の代わりにvi)お気に入りのエディターを使用して、Windows セッションから直接同じファイル(一部の Dockerfile など)を書き込み、変更することもできます。

そして、これらすべては企業のファイアウォールの背後で行われます。


ボーナス: httpのみ

トゥアン追加コメント欄:

おそらく私の会社のプロキシは https を許可していません。回避策は次のとおりです:

  • boot2docker ssh
    dockerプロセスを終了し、
  • プロキシを設定export http_proxy=http://proxy.comし、
  • ドッカーを起動するdocker -d --insercure-registry docker.io

おすすめ記事