Docker for Windows使ってて、結構ハマるので記載。

まず、proxy使ってる場合。Docker for Windowsのsettingsで下記を設定。

sample01

プロキシはこれで通るはず。

それでもネットワーク系のエラーが出る場合はsettingsのDockerEngineのjsonを下記の様にする。

sample02

上記の設定は色々あるっぽいですが、「insecure-registries」にdocker.io入れないと動かなかった。

この辺まではググれば大体出てくるはず。


で、ハマったエラー。

composeでproxyエラー

docker-compose buildでやると、下記の感じのエラーが出る。

failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to authorize: rpc error: code = Unknown desc = failed to fetch anonymous token: Get "https://auth.docker.io/token?scope=repository%3Alibrary%2Fmariadb%3Apull&service=registry.docker.io": proxyconnect tcp: EOF

これ多分、Docker for Windowsがバグってると思う。どうもcompose通した時のdocker pullがプロキシ使ってないっぽい。何か別の設定あるのかしら?

さらに言うと、「FROM mariadb:10.6」これは通らないけど、「FROM mariadb」これは何故か通る。なんじゃらほい。。。

なので、Dockerfileとかcompose.ymlで指定されているバージョンのイメージを先にpullしておくと上手くいく。

# こんな風に書かれてたら
FROM mariadb:10.6

# buildする前に手でpullしておく
docker pull mariadb:10:6

# 必要なイメージを全部pullしたら後は普通にbuild
docker-compose build
シェルスクリプトのエラー

実行すると、「/usr/bin/env: bash\r: そのようなファイルやディレクトリはありません」みたいなエラーになる事が結構ある。

これは改行コードがCRLFになってるから。LFのみに変えてあげないとだめ。

やり方は色々あると思いますが、vscode使ってるならvscodeでやるのが楽かも?

sample03

対象ファイル開いて、右下改行コードのところで変更できる。

というか、Gitの改行コードの設定をどうにかしないとホントはダメだと思うんだけど、上手いやり方が思いつかないというか調べてない。。。