vscode using remote docker

五月 16, 2022 [vscode, docker] #docker #vscode

vscode using remote docker

Docker开启远程端口

在远程主机上:

创建文件 daemon.json 到目录 /etc/docker:

 {"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]}

创建文件 /etc/systemd/system/docker.service.d/override.conf:

 [Service]
 ExecStart=
 ExecStart=/usr/bin/dockerd

重启docker:

 systemctl daemon-reload
 systemctl restart docker.service 

配置本地使用远程 Docker 服务

ssh-copy-id

创建一个context:

docker context create <context name> --docker "host=ssh://<user>@<host>[:port]"

切换到上面这个context: 测试一下:

docker context use <context name>
docker info

这里会输出和在远程主机上运行 docker info 一样的结果, 实际上这里docker本地只是一个客户端,连接到远程主机上的docker服务。

开始一个vscode项目!

这里有两个方式

方式一: Attach Remote Host Container

远程主机上创建项目 新建一个目录,例如 ~/newproj, 然后加一个Dockerfile,例如:

FROM python                                                                
ENV DEBIAN_FRONTEND=noninteractive 
apt-get update                

然后创建镜像,再启动容器:

docker build . -t <image tag>
docker run -d --name <container name> -v ~/newproj:/workspaces/newproj <image tag> tail -f /dev/null

注意: 这里要挂载项目目录到容器中方便保存文件。tail -f 这个命令是为了让容器保持运行。

本地 VSCode 访问远程容器 切换 Docker context 打开VSCode,按下 ctrl+shift+p 运行 docker contexts use , 选择上面创建的docker context.

连接容器 按下 ctrl+shift+p 运行 Remote-Containers:Attach to Running Container..., 选择上面创建的容器名字。

连接成功后,按下 ctrl+k, ctr+o, 你会发现VSCode弹出的不是本地目录,而是容器内部的目录!现在VSCode只是一个客户端,一切操作都在容器中了!

尝试一下。选择上面创建的 /workspaces/newproj,新建一个main.py,保存。再去主机上看,~/newproj/main.py就躺在那。

现在,可以愉快地在容器里面编码了。

微软官方推荐的办法,比较麻烦?略。