105

Python アプリケーションで docker を使用するためのfig ガイドに従っていますが、docker がコマンドに到達すると

RUN pip install -r requirements.txt

次のエラー メッセージが表示されます。

Step 3 : RUN pip install -r requirements.txt
 ---> Running in fe0b84217ad1
Collecting blinker==1.3 (from -r requirements.txt (line 1))
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', gaierror(-2, 'Name or service not known'))': /simple/blinker/

これが数回繰り返され、別のメッセージが表示されます。

Could not find any downloads that satisfy the requirement blinker==1.3 (from -r requirements.txt (line 1))
  No distributions at all found for blinker==1.3 (from -r requirements.txt (line 1))

そのため、何らかの理由で pip は docker コンテナー内からパッケージにアクセスできません。インターネットへのアクセスを許可するために必要なことはありますか?

ただし、 pip は docker コンテナーの外部にあるものをインストールするのに問題なく動作し、その正確なパッケージ ( blinker==1.3) でも問題なく動作したので、それは問題ではありません。また、この問題はそのパッケージに固有のものではありません。pip installどのパッケージのどのコマンドでも同じ問題が発生します。

ここで何が起こっているのか誰にも分かりませんか?

4

18 に答える 18

69

あなたの問題は、Docker が適切な DNS サーバーを使用していないという事実に起因しています。次の 3 つの方法で修正できます。

1. Google DNS をローカル構成に追加する

/etc/resolv.conf を変更し、最後に次の行を追加します

# Google IPv4 nameservers nameserver 8.8.8.8 nameserver 8.8.4.4

他の DNS サーバーを追加する場合は、こちらをご覧ください。

ただし、この変更は永続的ではありません (このスレッドを参照してください)。永続的にするには: $ sudo nano /etc/dhcp/dhclient.conf domain-name-server を先頭に追加して行のコメントを外し、編集します。 prepend domain-name-servers 8.8.8.8, 8.8.4.4;

dhclient を再起動します$ sudo dhclient

2. Docker 構成の変更

ドキュメントで説明されているように:

デスクトップで Ubuntu または Ubuntu の派生物を実行するシステムは、通常、/etc/resolv.conf ファイルでデフォルトのネームサーバーとして 127.0.0.1 を使用します。

Docker で使用する DNS サーバーを指定するには:

1. Log into Ubuntu as a user with sudo privileges.

2. Open the /etc/default/docker file for editing :

    $ sudo nano /etc/default/docker

3. Add the following setting for Docker.

    DOCKER_OPTS="--dns 8.8.8.8"

4. Save and close the file.

5. Restart the Docker daemon :

    $ sudo systemctl restart docker

3. Docker の実行時にパラメーターを使用する

docker を実行するときは、次のパラメーターを追加するだけです。--dns 8.8.8.8

于 2015-08-04T10:32:51.513 に答える
17

私にとっては、docker デーモンを再起動するだけで役に立ちました。

service docker restart
于 2016-05-13T09:31:31.820 に答える
3

私は同じ問題を抱えていました。エラーの原因はプロキシです。

だから、私はDockerfileを次のように編集します

RUN pip install -r /app/requirements.txt --proxy=http://user:pass@addr:port
于 2018-02-14T13:28:51.947 に答える
3

理由はわかりませんが、エラーは pip が を部分で/simple/blinker/はなく DNS ホスト名として解決しようとしていることを意味します。これは、ホスト名などの文字列を返す可能性pypi.python.orgのある URL を思い付くことさえできないため、非常に奇妙に思えます。urlparse部。何か問題がないか確認してみます~/.pip/pip.conf

于 2015-02-23T06:54:26.733 に答える
1

Docker DNS を Google DNS (8.8.8.8) または 10.0.0.2 に構成しても、会社の環境では機能しませんでした。

実行中: $ drill @8.8.8.8 www.amazon.com または @10.0.0.2 がこれを確認しました。

機能する DNS を見つけるために、$ drill www.amazon.com を実行すると、ネットワークで使用されている DNS IP が表示されました。

次に、次の手順を使用して Ubuntu で設定し、docker の DNS を構成します。

/etc/docker/daemon.json の dns を変更しました

{
    "dns": ["the DNS ip from step1"]
}

Restart docker: sudo service docker restart
于 2018-02-15T20:19:49.533 に答える
-2

走らせてください。時々 pypi に接続の問題が発生し、それが壊れていると思わせるために騒々しく顔に出されます。念のために言っておきますが、転がしてみてください。

これらの赤いエラー行にもかかわらず、結論は「正常に構築されました」です。

$ docker build .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM docker-registry.aws.example.com:5000/cmcrc/python2:20160517120608
 ---> 1e5034711aa9
Step 2 : RUN pip install prometheus-client requests
 ---> Running in f3c580fc93ae
Collecting prometheus-client
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe15a1d8610>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/prometheus-client/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe15a1d87d0>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/prometheus-client/
  Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe15a1d8990>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/prometheus-client/
  Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe15a1d8b50>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/prometheus-client/
  Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe15a1d8d10>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/prometheus-client/
  Downloading prometheus_client-0.0.13.tar.gz
Collecting requests
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe159e9d4d0>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/requests/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe159e9da10>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/requests/
  Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe159e9dc50>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/requests/
  Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe159e9de10>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/requests/
  Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe159e9dfd0>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/requests/
  Downloading requests-2.10.0-py2.py3-none-any.whl (506kB)
Building wheels for collected packages: prometheus-client
  Running setup.py bdist_wheel for prometheus-client: started
  Running setup.py bdist_wheel for prometheus-client: finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/04/94/f5/b803b2ff65e8344e99ca99b7f7cb8194224017167809a32b78
Successfully built prometheus-client
Installing collected packages: prometheus-client, requests
Successfully installed prometheus-client-0.0.13 requests-2.10.0
 ---> 19c5e3cfe08f
Removing intermediate container f3c580fc93ae
Successfully built 19c5e3cfe08f
于 2016-06-01T05:18:37.773 に答える