LoginSignup
4
6

More than 1 year has passed since last update.

Docker Desktopを使わずにWSL2でVSCode Remote Containerを使う

Posted at

Docker Desktopはライセンス問題があり、利用しづらくなりそうなので、Docker Desktopを使わずに開発できるようにしたいです。Windowsを使っていると、Docker DesktopはWSL2がバックエンドになっており、DockerデーモンはWSL2で稼働していますので、Docker Desktopを使わずにVSCodeから利用できるようにします。

Docker Daemonの設定

WSL2で動かしているUbuntuへのDockerの導入は以下を参照。
https://docs.docker.com/engine/install/ubuntu/

デフォルトではdocker.sockのUNIXソケットだけをListenしているのでTCPでもListenするように設定します。設定したらserviceで再起動して反映します。本当はtlsは有効化したほうがいいんでしょうけれど簡単にするためにfalseにしておきます。

/etc/docker/daemon.json

{
  "debug": false,
  "tls": false,
  "hosts": ["tcp://127.0.0.1:2375", "unix:///var/run/docker.sock"]
}

Docker CLIの入手

ビルドされたものがあるようなので、ありがたく使います。
https://github.com/StefanScherer/docker-cli-builder

Docker CLIの設定

PowerShellで実行できることを確認してみます。

# Docker DaemonがListenしている、2375ポートがつながるか確認してみます
Test-NetConnection -ComputerName localhost -Port 2375
# つながりそうならdocker contextを作ります
docker context create remote --docker 'host=tcp://localhost:2375'
docker context use remote
# ClientとServerの情報が両方出てきたらOKです
docker version

devcontainer

VSCodeに与える.devcontainer/devcontainer.jsonの例は以下の通りです。

  • dockerFileで使うイメージをビルドするためのDockerfileを指定します。imageで使いたいイメージを指定してもよいようです
  • extensionsで使いたいVSCode拡張機能を指定します。
  • workspaceMountでコンテナにマウントしたいディレクトリを指定します。絶対パスでないといけない、かつ、WSL2からアクセス可能なパスでないとエラーが起きてしまいました。Docker Desktopならこうはならないようで、気持ち悪いですが諦めます。
{
    "name": "my_python_container",
    "dockerFile": "Dockerfile",
    "settings": {
        "python.pythonPath": "/usr/bin/python3"
    },
    "extensions": [
        "ms-python.python"
    ],
    "workspaceMount": "source=/mnt/c/mydir/workspace,target=/workspace,type=bind,consistency=delegated",
    "workspaceFolder": "/workspace"
}

4
6
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
4
6