【解決】docker buildでNewConnectionErrorのエラーで失敗

【無料】docker buildでNewConnectionErrorのエラーで失敗

 

★悩み★
・docker build実行時にNewConnectionErrorのエラーで失敗する。
・docker build実行時にNewConnectionErrorが発生する原因を知りたい。
・NewConnectionErrorが発生しないようにする手順を知りたい。



こういった「悩み」に答えます。
 

★本記事の内容★
① docker build実行時にNewConnectionErrorのエラーが発生する原因を紹介
② docker build時のエラー(NewConnectionError)に対する対処手順を紹介



これからご紹介する「docker buildでNewConnectionErrorのエラーで失敗」を実践したことで、10分以内で「docker build時のエラー(NewConnectionError)を解決」できました。

記事の前半では「docker build実行時にNewConnectionErrorのエラーが発生する原因」を解説しつつ、記事の後半では「docker build時のエラー(NewConnectionError)に対する対処手順」を紹介します。

この記事を読み終えることで、「NewConnectionErrorでdocker buildに失敗するトラブルを解消できる」状態になります。
 

docker build実行時にNewConnectionErrorのエラーが発生する原因

docker build実行時にNewConnectionErrorのエラーが発生する原因


「docker build実行時にNewConnectionErrorのエラーが発生する原因」に関してご説明します。
 

具体的なエラー内容と発生原因に関して説明しますね。



筆者は、以下のDockerfileを用いてコンテナイメージ作成を試みました。

# cat Dockerfile
FROM python:3.8

WORKDIR /app

COPY requirements.txt .

# コンテナ内で必要なパッケージをインストール
RUN pip install --trusted-host pypi.python.org -r requirements.txt

COPY main.py .
EXPOSE 8000

# FastAPIを8000ポートで待機
CMD ["uvicorn", "main:app", "--reload", "--host", "0.0.0.0", "--port", "8000"]



上記Dockerfileの詳細に関しては、以下をご覧ください。



docker buildコマンド実行後、NewConnectionErrorのエラーが発生し、Dockerのコンテナイメージ作成に失敗しました。

# ls
Dockerfile
# docker build .
Sending build context to Docker daemon  4.019MB
Step 1/7 : FROM python:3.8
 ---> e7d3be492e61
Step 2/7 : WORKDIR /app
 ---> Using cache
 ---> a96c66083b2c
Step 3/7 : COPY requirements.txt .
 ---> Using cache
 ---> 45cfce7f2639
Step 4/7 : RUN pip install fastapi
 ---> Running in ff0f3f0dcf1b
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f4596e340d0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/fastapi/



docker build実行時に「NewConnectionError」が発生した原因は以下です。

★docker build実行時にNewConnectionErrorが発生し失敗する原因★
NewConnectionErrorが発生する原因として、「Dockerのコンテナイメージ内から外部のネットワークへ通信ができない」があります。



以上が、「docker build実行時にNewConnectionErrorのエラーが発生する原因」となります。
 

docker build実行時に「NewConnectionError」のエラーが発生し失敗した場合、ネットワーク周りの設定を見直しましょう。


 

docker build時のエラー(NewConnectionError)に対する対処手順

docker build時のエラー(NewConnectionError)に対する対処手順


「docker build時のエラー(NewConnectionError)に対する対処手順」に関してご紹介します。

★docker build時のエラー(NewConnectionError)に対する対処手順★
・docker build実行時に利用するネットワークを指定
・Dockerのコンテナイメージ内に存在する/etc/resolv.confを修正



docker build実行時に「NewConnectionError」のエラーが発生し失敗した場合、上記の対処をすることで、エラーを解消できます。
 

上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2021年6月17日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)



以降で、上記「docker build時のエラー(NewConnectionError)に対する対処手順」の各手順に関してご説明します。
 

docker build実行時に利用するネットワークを指定

「docker build実行時に利用するネットワークを指定」に関してご説明します。
 

docker build実行時に利用するネットワークを指定することで、「NewConnectionErrorのエラーによる失敗」を解消できます。



以下のようにdocker buildコマンドを実行してください。

# docker build --network=host . 

 

docker buildコマンド実行時に「–network=host」と指定することで、ホスト(パソコン)側のネットワークを利用しコンテナイメージを作成します。

参考:docker buildコマンドの公式リファレンス



上記で「NewConnectionErrorのエラーによるdocker buildコマンドの失敗」が解消しない場合、次節の対処手順を試してください。
 

以上で、「docker build実行時に利用するネットワークを指定」は完了です。
 

Dockerのコンテナイメージ内に存在する/etc/resolv.confを修正

「Dockerのコンテナイメージ内に存在する/etc/resolv.confを修正」に関してご説明します。
 

/etc/resolv.confには、DNSを使用してホスト名とIPアドレスを解決する方法が定義されます。



Dockerfileにおいて、「外部ネットワークと通信するコマンド」が実行される前に、下記コマンド( echo “nameserver 8.8.8.8” > /etc/resolv.conf )を実行しましょう。

# cat Dockerfile
FROM python:3.8

WORKDIR /app

COPY requirements.txt .

# コンテナ内で必要なパッケージをインストール
RUN echo "nameserver 8.8.8.8" > /etc/resolv.conf && pip install --trusted-host pypi.python.org -r requirements.txt

COPY main.py .
EXPOSE 8000

# FastAPIを8000ポートで待機
CMD ["uvicorn", "main:app", "--reload", "--host", "0.0.0.0", "--port", "8000"]



筆者の場合、上記対処で「NewConnectionErrorのエラーによるdocker buildコマンドの失敗」を解消できました。
 

以上で、「Dockerのコンテナイメージ内に存在する/etc/resolv.confを修正」は完了です。
 

上記の対処で、docker build時のエラー(NewConnectionError)を解消できます。



【まとめ】docker buildでNewConnectionErrorのエラーで失敗

【解決】docker buildでNewConnectionErrorのエラーで失敗


今回の記事を通して、「docker buildでNewConnectionErrorのエラーで失敗」をご紹介することで、以下の悩みを解消しました。
 

★悩み★
・docker build実行時にNewConnectionErrorのエラーで失敗する。
・docker build実行時にNewConnectionErrorが発生する原因を知りたい。
・NewConnectionErrorが発生しないようにする手順を知りたい。



「docker build実行時にNewConnectionErrorのエラーで失敗したけどどう解消すればいいのか?」で悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。

コメント

タイトルとURLをコピーしました