🐳
devcontainer内でDinDがうまく動かないときの対処法
GitHub Actionsを作ろうとして act
を devcontainer 内で作ろうとしたところ、以下のようにDockerのエラーが表示されました。
[Check reviewers' approval/Checks if this action works] 🐳 docker pull image=catthehacker/ubuntu:act-latest platform= username= forcePull=true
[2023-09-20T05:40:59.922547000Z][docker-credential-desktop][F] get system info: exec: "sh": cannot run executable found relative to current directory
[goroutine 1 [running, locked to thread]:
[common/pkg/system.init.0()
[ common/pkg/system/os_info.go:32 +0x1bc
[Check reviewers' approval/Checks if this action works] Could not get auth config from docker config: error getting credentials - err: exit status 1, out: ``
Error: error getting credentials - err: exit status 1, out: ``;
以前はこんなことは無かったので、devcontainer周りのバージョンのせいかもしれませんが、以下の記事を参考にとりあえず ~/.docker/config.json
を消してみました。
不思議なことにそれで解決。おそらく config.json
内の credsStore
が悪さをしている気がします。
node@cb7eaf88d49c:/workspaces/reviewer-approve-required-action$ cat ~/.docker/config.json
{
"credsStore": "dev-containers-98e4f669-8c5c-4c07-ab67-1c7926f90090"
}
ヒントになりそうなIssueはあるものの、解決には至りませんでした。
当面はdevcontainer環境を作ったときでDinDをしたいときにはこの作業が必要になりそうです。とは言うものの、毎回やるのは面倒なので devcontainer.json
を以下のように設定しました。
{
"name": "Untitled Node.js project",
"build": {
"dockerfile": "Dockerfile"
},
"remoteUser": "node",
"features": {
"ghcr.io/dhoeric/features/act": {},
"ghcr.io/devcontainers/features/docker-outside-of-docker": {}
},
"postCreateCommand": "rm ~/.docker/config.json"
}
Discussion