vscode using remote docker
五月 16, 2022 [vscode, docker] #docker #vscodevscode 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就躺在那。
现在,可以愉快地在容器里面编码了。