LoginSignup
0
1

More than 1 year has passed since last update.

VScodeのRemote Development+Dev Containersでリモートコンテナに接続しようとしたらローカルのDockerが起動するようになってしまった

Posted at

リモートのGPUサーバにDockerデーモンを立てて,そこに手元のPCから(docker desktopを起動して)VSCodeのRemote Development / Dev Containersで接続して,コンテナ内でコードを書いて実行しています.

正常な場合

通常は以下のようなログが表示されて,リモートサーバのコンテナにvscodeが接続されます.

正常な場合にvscodeでshow logで表示される内容
[2023-03-30T07:08:06.858Z] Dev Containers 0.282.0 in VS Code 1.76.2 (ee2b180d582a7f601fa6ecfdad8d9fd269ab1884).
[2023-03-30T07:08:06.858Z] Start: Resolving Remote
[2023-03-30T07:08:06.858Z] Setting up container for folder or workspace: /foo/bar/dir
[2023-03-30T07:08:06.858Z] Host: ssh://my.ssh.ip.address
[2023-03-30T07:08:06.858Z] Local Docker: true
[2023-03-30T07:08:06.860Z] Start: Check Docker is running
[2023-03-30T07:08:06.860Z] Start: Run: docker version --format {{.Server.APIVersion}}
...

ダメな場合

ところが,なぜか繋がらなくなってしまう現象が,謎のタイミングで発生します.
「繋がらなくなってしまう」というのは,vscodeが「ローカルの」PCのdockerのコンテナを起動してしまうのです.

その時のvscodeのログがこちら.

ダメな場合にvscodeでshow logで表示される内容
[2023-03-30T07:08:06.858Z] Dev Containers 0.282.0 in VS Code 1.76.2 (ee2b180d582a7f601fa6ecfdad8d9fd269ab1884).
[2023-03-30T07:08:06.858Z] Start: Resolving Remote
[2023-03-30T07:08:06.858Z] Setting up container for folder or workspace: /foo/bar/dir
[2023-03-30T07:08:06.858Z] Context: desktop-linux
[2023-03-30T07:08:06.858Z] Start: Check Docker is running
[2023-03-30T07:08:06.858Z] Start: Run: docker version --format {{.Server.APIVersion}}
...

Host: ssh://my.ssh.ip.addressという一行が出てこないので,sshが動いていない様子.

たまになったりならなかったり,誰かがなったり自分がなったり.一旦なったら直らない現象で,vscodeを再起動・再インストールしてもダメ,docker desktopを再起動・再インストールしてもだめ.直るときもあったりなかったり.OSもwinだったりmacだったりと,原因がつかめません.

直し方

で,あるとき上のログをよくよくながめてみたら,

なんだこれは
[2023-03-30T07:08:06.858Z] Context: desktop-linux

という行があるので,contextというのを調べてみたら,これが原因でした.

ダメな場合はcontextがdesktop-linuxになってる
$ docker context ls               
NAME                TYPE                DESCRIPTION                               DOCKER ENDPOINT                                KUBERNETES ENDPOINT   ORCHESTRATOR
default             moby                Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                                          swarm
desktop-linux *     moby                                                          unix:///Users/tamaki/.docker/run/docker.sock                         

正常に接続できている場合には,以下のように表示されます.

正常な場合にはcontextがdefaultになっている
$ docker context ls         
NAME                TYPE                DESCRIPTION                               DOCKER ENDPOINT                                KUBERNETES ENDPOINT   ORCHESTRATOR
default *           moby                Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                                          swarm
desktop-linux       moby                                                          unix:///Users/tamaki/.docker/run/docker.sock                         

変更するには以下のようにします.

contextをdefaultに変更
$ docker context use default      
default
Current context is now "default"

これでvscodeで無事リモートサーバのコンテナに接続できるようになりました.

原因

直し方は分かったので問題は解決したのですが,なぜcontextがdefaultでなくなってしまうのかは謎のまま.

docker desktopをアップデートするとcontextが変わってしまう,という問題があったらしいのですが,それが原因だったかどうかは不明.

0
1
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
0
1