2017-09-12 7 views
0

私がビルドしているドッカーイメージは、pip経由でたくさんのpythonパッケージを取得します。ドッカーコンテナを構築するときにホストマシンへのトラフィックをルーティングする

RUN pip install -r lots-of-packages.txt 

私のホストマシンは、PyPiパッケージのミラーとキャッシュを実行しているので、これらのパッケージをすばやくダウンロードできます。

pip installコマンドは、ユーザーが引数--index-url経由でパッケージインデックスの場所を指定することができます。しかし、docker build中にホストlocalhostがドッキングウィンドウコンテナ自体を指し、いないサービスを提供している私のホストマシン

RUN pip install --index-url http://localhost:3141/root/pypi/ -r lots-of-packages.txt 

キャッシュ。

docker build経由でドッキング用のコンテナを構築するときに、ホストマシンのネットワークリソースにアクセスするにはどうすればよいですか?

docker build --add-host <host>:<ip>私はIPのホスト名を設定できるようですが、ビルド中にホストに対処する有効なIPがありますか?

+0

→ 'RUN pip install -r lots-of-packages.txt' –

+0

ありがとう@KlausD。私はそのタイプミスを修正しました。 –

答えて

0

あなたが行うことができますネットワークモードを指定してたときに建物:

docker build --network host ... 
+0

'' --network 'はAPIバージョン1.25が必要ですが、DockerデーモンAPIバージョンは1.23です** ** sigh **、私はmacOSの最新リリースだと思います。私は、プレリリース版をインストールするための方法を見つけなければならないかもしれません。 –

0

最も簡単なのは(例えばip aコマンドを使用して)docker0ブリッジのIPアドレスをチェックし、代わりに、ローカルホストの橋の上のホストのIPを使用することです。

RUN pip install --index-url http://172.17.0.1:3141/root/pypi/ lots-of-packages.txt

あなたには、いくつかのポート転送が関与することになり、おそらくWindowsまたはMac上で実行している場合:だからあなたはLinuxとdocker0のIPを実行すると仮定すると、あなたのコマンドは次のようになります172.17.0.1です。

+0

MacではI * am *であり、 'docker0'デバイスはありません。私はそれを設定する方法を見つけることができるかどうかを見てみましょう。 –

+0

Mac上のAFAIKドッカーは、Linuxカーネルを持つために何らかの種類のVMを使用します。したがって、プロキシがホスト上で動作し、このVMの内部ではなく、ホストからVMにポートを転送する必要があります。私はLinuxを使い、それを手助けすることはできませんが、私が使用する検索用語は次のとおりです: "ホストからのdocker mac forward port" – odk

関連する問題