単に、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を使う
コメント