LoginSignup
12
3

More than 1 year has passed since last update.

[devcontainer / Docker] containerが立ち上がる直前でエラーが発生する

Posted at

概要

以下のような状況に陥ったので、同様の問題に出くわした方のために記事を書きました。

  • devcontainerでコンテナを立ち上げる際にエラー発生
  • docker imageのbuildまでは成功し、エラー発生はその直後
  • 重要なエラーメッセージのありかが分からず、原因不明のまま数時間経過
  • エラーメッセージさえ見つかれば即解決できた

環境

Mac OSのM2チップ搭載マシンで発生。

ただし、今回のエラーはたとえwindowsだとしても発生する。

症状

devcontainerを使ってフォルダを開くと、docker imageがbuildされる。
image build終了後は、containerが立ち上がるはずのところ、エラーが発生した。

具体的には、以下のように「コンテナーの設定中にエラーが発生しました。」というメッセージが表示された(ローカルPCがMacの場合)。

スクリーンショット 2023-06-02 17.10.11.png

これだけだと何もわからないので、「ローカルでdevcontainer.jsonを編集」ボタンを押下する。
すると、VSCode上で、/Users/user_name/Library/Application Support/Code/logs/20230602T154843/window14/exthost/ms-vscode-remote.remote-containers/remoteContainers-2023-06-02T08-09-38.668Z.logのようなログファイルを確認することができる。

以下で見てみよう。

エラー詳細

ログの最後の方には以下のようなログが残っていた。

[2023-06-02T07:51:15.786Z] Writing docker-compose.devcontainer.containerFeatures-1685692275786.yml to /Users/user_name/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-containers/data/docker-compose
[2023-06-02T07:51:15.787Z] Start: Run: docker-compose --project-name test_devc -f /Users/user_name/src/test_devc/docker-compose.yml -f /Users/user_name/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-containers/data/docker-compose/docker-compose.devcontainer.build-1685692274286.yml -f /Users/user_name/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-containers/data/docker-compose/docker-compose.devcontainer.containerFeatures-1685692275786.yml up -d
[2023-06-02T07:51:15.908Z] WARN[0000] Found orphan containers ([base_container]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up. 
[2023-06-02T07:51:15.929Z] [+] Running 0/0
[2023-06-02T07:51:15.929Z]  ⠋ Container base_container  Creating                                      0.0s
Error response from daemon: Conflict. The container name "/base_container" is already in use by container "fecca7d84a9a3db1bc067ca277ab248dededfed63cf4ce92ea75b79474a6fb36". You have to remove (or rename) that container to be able to reuse that name.
[2023-06-02T07:51:15.932Z] Stop (145 ms): Run: docker-compose --project-name test_devc -f /Users/user_name/src/test_devc/docker-compose.yml -f /Users/user_name/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-containers/data/docker-compose/docker-compose.devcontainer.build-1685692274286.yml -f /Users/user_name/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-containers/data/docker-compose/docker-compose.devcontainer.containerFeatures-1685692275786.yml up -d
[2023-06-02T07:51:15.933Z] Error: Command failed: docker-compose --project-name test_devc -f /Users/user_name/src/test_devc/docker-compose.yml -f /Users/user_name/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-containers/data/docker-compose/docker-compose.devcontainer.build-1685692274286.yml -f /Users/user_name/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-containers/data/docker-compose/docker-compose.devcontainer.containerFeatures-1685692275786.yml up -d
[2023-06-02T07:51:15.933Z]     at _se (/Users/user_name/.vscode/extensions/ms-vscode-remote.remote-containers-0.292.0/dist/spec-node/devContainersSpecCLI.js:1912:3061)
[2023-06-02T07:51:15.933Z]     at process.processTicksAndRejections (node:internal/process/task_queues:96:5)
[2023-06-02T07:51:15.933Z]     at async Bse (/Users/user_name/.vscode/extensions/ms-vscode-remote.remote-containers-0.292.0/dist/spec-node/devContainersSpecCLI.js:1894:3170)
[2023-06-02T07:51:15.933Z]     at async Xse (/Users/user_name/.vscode/extensions/ms-vscode-remote.remote-containers-0.292.0/dist/spec-node/devContainersSpecCLI.js:1961:2799)
[2023-06-02T07:51:15.933Z]     at async vh (/Users/user_name/.vscode/extensions/ms-vscode-remote.remote-containers-0.292.0/dist/spec-node/devContainersSpecCLI.js:1961:3741)
[2023-06-02T07:51:15.933Z]     at async gae (/Users/user_name/.vscode/extensions/ms-vscode-remote.remote-containers-0.292.0/dist/spec-node/devContainersSpecCLI.js:2092:10213)
[2023-06-02T07:51:15.933Z]     at async mae (/Users/user_name/.vscode/extensions/ms-vscode-remote.remote-containers-0.292.0/dist/spec-node/devContainersSpecCLI.js:2092:9954)
[2023-06-02T07:51:15.935Z] Stop (6397 ms): Run: /Users/user_name/Downloads/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/user_name/.vscode/extensions/ms-vscode-remote.remote-containers-0.292.0/dist/spec-node/devContainersSpecCLI.js up --user-data-folder /Users/user_name/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-containers/data --container-session-data-folder /tmp/devcontainers-d22458b3-ff1e-4b34-8584-350447dbf9761685692268456 --workspace-folder /Users/user_name/src/test_devc --workspace-mount-consistency cached --id-label devcontainer.local_folder=/Users/user_name/src/test_devc --id-label devcontainer.config_file=/Users/user_name/src/test_devc/.devcontainer/devcontainer.json --log-level debug --log-format json --config /Users/user_name/src/test_devc/.devcontainer/devcontainer.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default on --mount-workspace-git-root true
[2023-06-02T07:51:15.935Z] Exit code 1
[2023-06-02T07:51:15.936Z] Command failed: /Users/user_name/Downloads/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/user_name/.vscode/extensions/ms-vscode-remote.remote-containers-0.292.0/dist/spec-node/devContainersSpecCLI.js up --user-data-folder /Users/user_name/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-containers/data --container-session-data-folder /tmp/devcontainers-d22458b3-ff1e-4b34-8584-350447dbf9761685692268456 --workspace-folder /Users/user_name/src/test_devc --workspace-mount-consistency cached --id-label devcontainer.local_folder=/Users/user_name/src/test_devc --id-label devcontainer.config_file=/Users/user_name/src/test_devc/.devcontainer/devcontainer.json --log-level debug --log-format json --config /Users/user_name/src/test_devc/.devcontainer/devcontainer.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default on --mount-workspace-git-root true
[2023-06-02T07:51:15.937Z] Exit code 1

最初は、上記ログのうち下から2行目が重要なエラー文言だと思っていた。そこにばかり集中して試行錯誤していたため、いつまでも手掛かりは見つからず。
しかし実際には、上から6行目が根本的な原因だった。

※下から2行目にはCommand failed:と書いてあり、一見するとここでエラーが発生したようにも読めるが、これは原因ではなく、その手前のどこかに根本的な原因が書かれているはず。そこを注意して探す。

私の場合は、このメッセージ内から根本原因を見つけることはできなかったので、次のような試行錯誤をした。1

対応策

今回は、devcontainer.jsonからdocker-compose.ymlを呼び出していたので、試しに

  • devcontainerを使わずに直接docker-compose.ymlを呼び出し

たところ、以下のように簡易なエラーメッセージが出力され、原因がすぐにわかった。

% docker-compose up                                     
WARN[0000] Found orphan containers ([base_container]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up. 
[+] Running 0/0
 ⠋ Container base_container  Creating                                                           0.0s
Error response from daemon: Conflict. The container name "/base_container" is already in use by container "fecca7d84a9a3db1bc067ca277ab248dededfed63cf4ce92ea75b79474a6fb36". You have to remove (or rename) that container to be able to reuse that name.

上記のメッセージを読むとcontainerの名前が被っていることが原因と書かれている。
そこで、docker-compose.ymlcontainer_nameを変更したところ、当初のエラーも含めて全て解消した。

結論

結局、devcontainerはエラーとは関係なかった。
単に、devcontainerのせいでエラーが読みにくくなっていただけだった。

devcontainer抜きでコンテナを立ち上げてみるのも手の一つかもしれない。

参考

参考にはならなかったけれども、以下のGitHub issueと同様のエラーが発生していた。

この人のエラーは結局解消していない。

  1. 実際には、最初の長いエラーメッセージよく読めば、根本原因も記載されている。しかし、長すぎて、自分にはどこが重要なのかわからなかった。

12
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
3