在上篇博客已经介绍了pycharm如何远程连接服务器,本篇文章介绍一下 pycharm 如何远程连接服务器上的docker容器,并在本地完成代码的运行与调试。

所需软硬件环境:
| 环境 | 版本 |
|---|---|
local system | windows 10 |
service system | ubuntu 18.04 |
docker | 20.10.7 |
docker system | ubuntu 18.04 |
local IDE | pycharm 2021.1.3 |
# 运行镜像
# 我这里使用的镜像是 sophgo/tpuc_dev:latest
docker run --privileged --name myname1234 -p 11777:22 -v $PWD:/workspace -it sophgo/tpuc_dev:latest
对参数做个说明:
--privileged,权限全开,不利于宿主机安全,生产环境应当禁止对外开放,不过这里仅是测试。
--name,给容器命名,可以随便写个,这里是myname1234。
-p,端口映射,本地的11777端口与docker容器的22端口做映射。本地的端口可以随便设置,但容器的端口必须是22,因为我们要使用ssh来连接docker。
-v,目录映射,本地当前目录下的workspace目录与容器的/docker目录做映射,$PWD 指的是我本地的目录,即xxx/workspace,workspace目录下存有代码文件tpu-mlir。
-it,以交互模式运行镜像。
进入容器以后修改容器的root密码:
# 输入以下指定来修改密码
passwd

在容器内安装ssh:
# 更新数据源
apt-get update
# 安装 ssh
apt-get install openssh-server
apt-get install openssh-client
# 修改 ssh 的配置文件
vim /etc/ssh/sshd_config
# 在默认添加以下内容
PermitRootLogin yes # 允许 root 用户使用 ssh 登录
# 重启 ssh
/etc/init.d/ssh restart
在服务器上进行ssh连通性测试:
ssh root@192.168.1.151 -p 11777
# 192.168.1.151为当前服务器的 ip

pycharm的配置和pycharm如何远程连接服务器这篇文章中的一致,这里不再赘述。
记得更改下端口,这里是访问服务器上的11777端口,也就是容器的22端口:

在pycharm中将本地系统上(ps:不是服务器上的哦)的D:\Python\tpu-mlir与容器中的/workspace/tpu-mlir做路径映射:

然后按照这篇文章将容器中的代码同步到本地的目录中:
同步前:

同步后:

再配置pycharm中的python解释器,使用的是容器中的python:
选择配置好的 ssh,由于是第一次连接,因此需要将ssh的配置保存在IDE的设置中,这里直接Move:

分别选择docker容器的python路径和代码路径,然后点击Finish即完成配置:

配置一样,只不过这里需要配置下远程的C/C++开发环境:

其中,172.25.97.170为本地的ip,10086为本地端口,本地的10086端口与docker容器中的22端口进行了映射,CMake及GDB会自动检测,如果没检测到,则需要查看容器内是否已经安装。
pycharm如何远程连接服务器与pycharm如何远程连接服务器上的docker容器这两篇文章相辅相成,可以作为pycharm通过远程连接进行开发相关方面的参考资料。