[Docker]DockerもProxy設定が必要だけど、ログから読めなかった話

単に、Proxy環境下ではDockerもProxy設定が必要だったという話
PythonでAWSのlambdaをローカル開発しようとしたとき、Dockerの起動でエラーが出たので、情報を残しておきます。

似たような話にいつもハマってしまうのですが、エラーメッセージからProxyが原因と読み取れなかった。。。

環境

Windows10 64bit
Docker Version 19.03.5
PyCharm COMMUNITY 2019.03
Python3.7
Package: AWS Toolkit 1.11

ネットワーク接続はプロキシ必須

やったこと

単に初期環境の準備です。

Pycharmの力を使って爆速でAWS Lambdaを開発・テスト・デプロイする方法
https://qiita.com/tez/items/36b5d1ace6519c1631cc

ここの「ローカルでの実行」のところです。

Python、Pycharmのプロキシ設定はできている状態ですが、Dockerのプロキシが設定していなかったことが原因でした。

エラーメッセージ

lambda_handlerをrunさせたとき

"C:\Program Files\Amazon\AWSSAMCLI\bin\sam.cmd" local invoke --template C:\Users\USER\03_Py_aws\untitled_2\.aws-sam\build\template.yaml --event "C:\Users\USER\AppData\Local\Temp\[Local] app.lambda_handler-event2.json"
Invoking app.lambda_handler (python3.7)
Error: "Could not find " lambci/lambda:python3.7 image locally and failed to pull it from docker.

表現がまちがっているかもですが、
Dockerでイメージやら必要なものをダウンロードしようとして、でもプロキシ設定をしていなかったことでダウンロードできず、その後、本来ダウンロードできていたはずのものを実行しようとして、Could not findになったのかなと。

適当なコンテナイメージを取得したとき

原因を探っていた時に、Dockerのみを実行してみると、それでもエラーになり、プロキシなのかなと思いました。

ログは他にも出ていたかもしれないです。。。

> docker pull ubuntu
Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.65.1:53: n o such host

対応方法

2か所必要でした。

その1:config.json(こっち忘れやすい)

C:\Users\USER\.docker\config.json
{
    "credsStore": "desktop",
    "proxies": {
        "default": {
            "httpProxy": "http://user_id:pass@xxx.xxx.xxx.xxx:port",
            "httpsProxy": "http://user_id:pass@xxx.xxx.xxx.xxx:port",
            "noProxy": "除外対象リスト"
        }
    },
    "stackOrchestrator": "swarm"
}

その2:DockerのSetting

DockerのSettings(タスクトレイにあるDockerアイコンを右クリックして選択)、
Resources → PROXIES

以下のように、ID、Pass付きで入力しました。
http://[UserID]:[Pass]@[IP Adress]:[Port]

対応後の確認

Docker再起動後、設定情報を確認

>docker info
Client:
 Debug Mode: false

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 1
 Server Version: 19.03.5
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: b34a5c8af56e510852c35414db4c1f4fa6172339
 runc version: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
 init version: fec3683
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.19.76-linuxkit
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 1.451GiB
 Name: docker-desktop
 ID: R2K2:SYS3:47DQ:JJSJ:UH26:MGPR:K2QO:CQUP:MAZS:77YJ:Q6HL:JQWV
 Docker Root Dir: /var/lib/docker
 Debug Mode: true
  File Descriptors: 35
  Goroutines: 52
  System Time: 2020-03-11T10:19:13.526548779Z
  EventsListeners: 3
 HTTP Proxy: http://xxxxx:xxxxx@xxx.xxx.xxx.xxx:10080
 HTTPS Proxy: http://xxxxx:xxxxx@xxx.xxx.xxx.xxx:10080
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
 Product License: Community Engine

参考

Docker Desktop for Windows の proxy 設定
https://qiita.com/2fbCvmiYKX/items/c6aab333364af25fd924

Proxy環境下でDocker for Windowsを使う

コメント

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