Remote Docker Daemon + VSCode Remote Container
tl;dr
- socket とか tcp port で Remote で docker daemon を叩く際の諸々を実際にやってみる
- Remote Server に対して、VSCode Remote Container をしたかったから、した
Host -> Remote Server -> Container
Environment
Remote Docker Daemon
Docker Daemon は起動時に -H
Option を指定することで、好きな Unix Socket や TCP Port で listen することが出来る
Example:
# default $ docker daemon -H /var/run/docker.sock & # TCP で待ち受ける $ docker daemon -H 0.0.0.0:5555 & $ docker daemon -H 127.0.0.1:5555 & # 両方で待ち受けることも出来る $ docker daemon -H /var/run/docker.sock -H 127.0.0.1:5555 &
ちなみに Ubuntu 16.04 の Default は以下の様になっている
$ systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-01-31 10:51:01 JST; 2 weeks 3 days ago Docs: https://docs.docker.com Main PID: 1054 (dockerd) Tasks: 20 Memory: 1.2G CPU: 30min 52.756s CGroup: /system.slice/docker.service └─1054 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
これに対して Docker Client においても、-H
Option でどの Docker Daemon に接続するか指定することが出来る
$ docker -H /var/run/docker.sock --version $ docker -H tcp://127.0.0.1:5555 --version
そのため、TCP Port を外部に露出したり ssh PortForward を使うことで、Remote Server の Docker Daemon に Local から接続することが出来る
$ ssh -NL localhost:5555:/var/run/docker.sock user@host & $ docker -H localhost:5555 --version Docker version 19.03.5, build 633a0ea
VSCode Remote Container
Remote の Docker Daemon を触れる状態で、VSCode settings.json
にて DockerHost を指定する
$ ssh -NL localhost:5555:/var/run/docker.sock user@host &
[Command] + P
でコマンドパレットを起動し、settings
と打ち込んで settings.json
を開く
"docker.host": "tcp://localhost:5555"
などと追記し、VSCode を再起動する
出来た。