文章目录

  • 前言
  • 1. 配置docker
  • 2. 配置pycharm
  • 补充:CLion连接docker
  • 结束语


前言

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

dockercom连接主机的433端口 docker连接服务器_ssh

  所需软硬件环境:

环境

版本

local system

windows 10

service system

ubuntu 18.04

docker

20.10.7

docker system

ubuntu 18.04

local IDE

pycharm 2021.1.3

1. 配置docker

# 运行镜像
# 我这里使用的镜像是 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/workspaceworkspace目录下存有代码文件tpu-mlir
  -it,以交互模式运行镜像。

  进入容器以后修改容器的root密码:

# 输入以下指定来修改密码
passwd

dockercom连接主机的433端口 docker连接服务器_pycharm_02


  在容器内安装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

dockercom连接主机的433端口 docker连接服务器_pycharm_03

2. 配置pycharm

  pycharm的配置和pycharm如何远程连接服务器这篇文章中的一致,这里不再赘述。

  记得更改下端口,这里是访问服务器上的11777端口,也就是容器的22端口:

dockercom连接主机的433端口 docker连接服务器_pycharm_04


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

dockercom连接主机的433端口 docker连接服务器_pycharm_05


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

  同步前:

dockercom连接主机的433端口 docker连接服务器_pycharm_06


  同步后:

dockercom连接主机的433端口 docker连接服务器_pycharm_07

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

dockercom连接主机的433端口 docker连接服务器_docker_08


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

dockercom连接主机的433端口 docker连接服务器_docker_09

补充:CLion连接docker

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

dockercom连接主机的433端口 docker连接服务器_服务器_10


  其中,172.25.97.170为本地的ip10086为本地端口,本地的10086端口与docker容器中的22端口进行了映射,CMakeGDB会自动检测,如果没检测到,则需要查看容器内是否已经安装。