需求:使用 VSCODE 在本地(如 Windows)连接远程服务器(如 Linux)上的容器,可以在编辑器内进行代码修改等操作。
前提准备:vscode remote-ssh docker
pycharm 学习来的偏方, pycharm 实现这个需求的方法无非就是把容器的 22 端口映射出来然后使用 ssh 登陆,相当于把容器也当成一个虚拟化的远程服务器。得益于 Remote – SSH,这在 VSCODE 中很好实现:
【远程服务器】启动容器,注意需要把容器的 22 端口映射出来,例如映射到 host 的 3333端口:-p 3333:22。
example:
1 |
docker run -itd -p 3333:22 dingms/ucas-bdms-hw-u64-2019:16.04 /bin/bash |
查看docker容器列表
1 |
docker ps |
进入容器
1 |
docker exec -it <CONTAINER ID> /bin/bash |
容器与宿主机之间复制文件
1 |
docker cp <src> <dest> |
【远程服务器容器】设置 root 账户密码:
1 |
passwd root |
根据提示设置密码即可。如果你启动容器的时候使用 -u 参数指定了一个非 root 用户,那么相应的要设置该账户的密码。
【远程服务器容器】很多镜像都不会默认安装 ssh,所以需要在容器内安装 ssh 服务:
1 |
apt update && apt install -y --no-install-recommends openssh-server |
【远程服务器容器】一般进入容器时使用的都是 root 账号,但是 ssh 默认是禁止 root 账号使用密码远程登录的,所以需要修改 ssh 配置文件使其允许:
1 |
sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config |
但是如果你启动容器的时候使用 -u 参数指定了一个非 root 用户,那么这步可以跳过。
【远程服务器容器】启动 ssh 服务:
1 |
service ssh start |
【本地】使用 VSCODE 连接,添加新的 ssh host 的时候地址这么写:
ssh root@your-server-ip -A -p 3333
这个 3333就是第 1 步启动容器的时候设置的映射端口。之后输入密码即可,和正常的连接远程服务器一样。
————————————————
原文链接:https://blog.csdn.net/u010099080/article/details/104801858