0

次のように、docker コンテナーで devpi を実行しています。

[Unit]
Description=devpi docker-container
Requires=docker.service
After=docker.service

[Service]
Restart=always
RestartSec=3
ExecStart=/usr/bin/docker run --rm -p 3141:3141 --name devpi -v /devpi_data:/data -e DEVPI_PASSWORD='********' akailash/docker-devpi
ExecStop=/usr/bin/docker stop -t 2 devpi

[Install]
WantedBy=multi-user.target

それはうまくいきます。ホスト上の URL 経由でアクセスでき、期待どおりにそこからパッケージをインストールできます。

6f663ba131a1        akailash/docker-devpi   "/docker-entrypoint.…"   3 hours ago         Up 3 hours          0.0.0.0:3141->3141/tcp   devpi

ただし、このコンテナからパッケージをインストールする別の docker イメージを構築したい場合は、ConnectTimeout があります。curl を試すと、しばらくすると接続がタイムアウトします。

この問題で説明されているように --net=host オプションを使用すると、pip インストールを実行できます。ただし、ホスト ネットワークを使用する必要はありません。0.0.0.0:3141 と 172.17.0.1:3141 を試しましたが、同じ結果が得られました。docker デーモン サービスに --ip=0.0.0.0 を追加してもうまくいきません。毎回 --net=host を使用せずに別のコンテナーから devpi コンテナーにアクセスするにはどうすればよいですか?

4

2 に答える 2

0

docker-compose ファイルで必要な docker イメージをビルドする devpi のみにアクセスする必要があるため、ビルド コンテキスト内でホスト ネットワークを使用しました。

build:
  network: host
  context: .
  dockerfile: Dockerfile.local

これにより、devpi に正しくアクセスできます。

于 2020-04-01T04:22:21.087 に答える