docker-compose up で proxyconnect tcp: dial tcp: lookup proxy.example.com: no such host

いつものように docker-compose コマンドでコンテナを起動し作業しようとしたところ、件名のエラーが発生するようになりました。

特に何も構成等を変更した覚えはないのですが、調査・復旧したので対応した内容をまとめておきます。

環境、バージョン等

$ cat /etc/issue
Ubuntu 20.04.3 LTS \n \l

$ docker --version
Docker version 20.10.8, build 3967b7d

$ docker-compose --version
docker-compose version 1.26.0, build d4451659

発生事象

コンテナを起動する

docker-compose up -d でコンテナを起動します。

$ docker-compose up -d
Pulling mysql (mysql:5.7)...
ERROR: Get "https://registry-1.docker.io/v2/": proxyconnect tcp: dial tcp: lookup proxy.example.com: no such host

「プロキシーサーバーが見つからない」と言われているようですが、全く見に覚えがありませんでした。

テスト用Dockerプロジェクトで試す

以前の記事 で紹介したテスト用プロジェクトでも一応試したましたが同様のエラーでした。

$ docker-compose up -d
Pulling web (nginx:alpine)...
ERROR: Get "https://registry-1.docker.io/v2/": proxyconnect tcp: dial tcp: lookup proxy.example.com: no such host

Docker ログイン

Dockerへのログインを試したところ、こちらも同様のエラーが出ました。

$ docker login
Authenticating with existing credentials...
Login did not succeed, error: Error response from daemon: Get "https://registry-1.docker.io/v2/": proxyconnect tcp: dial tcp: lookup proxy.example.com: no such host
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username (docker-username): docker-username
Password: 
Error response from daemon: Get "https://registry-1.docker.io/v2/": proxyconnect tcp: dial tcp: lookup proxy.example.com: no such host

原因と解消方法について

Dockerサービスの環境変数

Dockerサービスが起動する際の環境変数がいかに設定されています。こちらにエラーメッセージに出ているプロキシーサーバー名と一致するので原因はこれでした。

当然この設定は変えた覚えが無いし認識すらしていなかったので、Dockerのアップデートの際に更新されたか追加されたのだと思われます。

/etc/systemd/system/docker.service.d/http-proxy.conf

$ sudo cat /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
  Environment="HTTP_PROXY=http://proxy.example.com:8080/"
  Environment="HTTPS_PROXY=http://proxy.example.com:8080/"

個人仕様の端末なのでプロキシーサーバーは利用していません。なので以下のようにコメントアウトしておきます。

[Service]
#  Environment="HTTP_PROXY=http://proxy.example.com:8080/"
#  Environment="HTTPS_PROXY=http://proxy.example.com:8080/"

サービスのリスタートとコンテナの起動

サービスをリスタートすることにより環境変数が読み込まれ、無事コンテナを起動することができました。

$ sudo systemctl daemon-reload

$ sudo systemctl restart docker

$ docker-compose up -d
Creating network "laravel-project_default" with the default driver
Pulling mysql (mysql:5.7)...
5.7: Pulling from library/mysql
a330b6cecb98: Pull complete
9c8f656c32b8: Pull complete
88e473c3f553: Pull complete
062463ea5d2f: Pull complete
daf7e3bdf4b6: Pull complete
1839c0b7aac9: Pull complete
cf0a0cfee6d0: Pull complete
fae7a809788c: Pull complete
dae5a82a61f0: Pull complete
7063da9569eb: Pull complete
51a9a9b4ef36: Pull complete
Digest: sha256:d9b934cdf6826629f8d02ea01f28b2c4ddb1ae27c32664b14867324b3e5e1291
Status: Downloaded newer image for mysql:5.7

(省略)

Creating laravel-project_mysql_1 ... done
Creating laravel-project_app_1   ... done
Creating laravel-project_web_1   ... done

参考

systemd における Docker の設定と管理

https://docs.docker.jp/config/daemon/systemd.html

コメント

このブログの人気の投稿

docker-compose で起動したweb、MySQLに接続できない事象

【PHP】PHP_CodeSnifferを使う(コーディングルールのカスタマイズ)