pycharm 远程连接docker容器开发和调试

本文档介绍了如何在Docker Compose环境下配置SSH服务,开放端口,允许root用户登录,并在Windows上通过SSH连接到Docker容器。同时,解决通过SSH连接后命令不存在的问题,重点在于环境变量的配置和PyCharm的路径映射设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要求:
pycharm为专业版,docker容器的ssh服务是开启的,并且开放了22端口,与远程主机绑定了端口
如果docker容器是通过docker comnpose启动的,也要开启相关服务。
这里就以docker compose 中的容器进行演示

开放端口

在docker-compose.yml配置文件中需要绑定22端口号

    ports:
      - '33:22'       # 主机的33端口绑定容器的22端口

如果是单独启动容器的就要在docker run-p参数中绑定33:22

容器配置

确保容器已经安装了以下服务:

apt-get install openssh-server
apt-get install openssh-client

进入容器中,输入命令service ssh status查看是否启动ssh 服务,没启动就用service ssh start启动

root@master:/opt# service ssh status
sshd is not running ... failed!
root@master:/opt# service ssh start 
Starting OpenBSD Secure Shell server: sshd.
root@master:/opt# service ssh status
sshd is running.

接着设置容器root账户登录
在root账户下,输入passwd,输入两次一样的密码

root@master:/opt# passwd
New password: 
Retype new password: 
passwd: password updated successfully

修改配置文件,允许以root用户登录

root@master:/opt# vim /etc/ssh/sshd_config

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin prohibit-password			# 找到这一行,将注释去掉,并将后面的改为yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

# 如果没有就直接在最后添加
PermitRootLogin yes

# 退出保存

重启ssh服务

root@master:/opt# service ssh restart
Restarting OpenBSD Secure Shell server: sshd.
root@master:/opt# service ssh status 
sshd is running.

尝试本地windwos 终端ssh连接

ssh root@192.168.1.81 -p 33
# root 是容器的用户名,不是远程主机的用户名
# 192.168.1.81 远程主机的地址
# -p 33   之前与容器22端口绑定的端口号
C:\WINDOWS\system32>ssh root@192.168.1.81 -p 33
The authenticity of host '[192.168.1.81]:33 ([192.168.1.81]:33)' can't be established.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes  # 直接输入yes
Warning: Permanently added '[192.168.1.81]:33' (ECDSA) to the list of known hosts.
root@192.168.1.81's password:	# 输入之前设置的root账户密码
Linux master 5.4.0-131-generic 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@master:~# uname -s				# 成功进入
Linux
root@master:~# uname -a
Linux master 5.4.0-131-generic #147~18.04.1-Ubuntu SMP Sat Oct 15 13:10:18 UTC 2022 x86_64 GNU/Linux

配置pycharm

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
路径映射配置:
在这里插入图片描述
添加Python解释器
在这里插入图片描述
在这里插入图片描述
配置完成
在这里插入图片描述

遇到的问题

在容器里输入各个命令都是正常的,比如pip list 或者python,但是通过ssh连接过后,就显示命令不存在
在这里插入图片描述
参考教程,根据这个教程解决了这个问题
因为我是用root账户登录的,所以在/root目录下编辑·.bashrc·,先查看环境变量,输入env

root@master:/opt/bitnami/scripts# env
SPARK_SSL_ENABLED=no
NSS_WRAPPER_GROUP=/opt/bitnami/spark/tmp/nss_group
HOSTNAME=master
JAVA_HOME=/opt/bitnami/java
NSS_WRAPPER_PASSWD=/opt/bitnami/spark/tmp/nss_passwd
SPARK_RPC_ENCRYPTION_ENABLED=no
PWD=/opt/bitnami/scripts
OS_FLAVOUR=debian-11
LIBNSS_WRAPPER_PATH=/opt/bitnami/common/lib/libnss_wrapper.so
SPARK_RPC_AUTHENTICATION_ENABLED=no
HOME=/
SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no
PYTHONPATH=/opt/bitnami/spark/python/:
TERM=xterm
HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop
HADOOP_HOME=/opt/hadoop
SPARK_MODE=master
SHLVL=1
SPARK_HOME=/opt/bitnami/spark
BITNAMI_APP_NAME=spark
LD_LIBRARY_PATH=/opt/bitnami/python/lib/:/opt/bitnami/spark/venv/lib/python3.8/site-packages/numpy.libs/:
APP_VERSION=3.3.1
OS_NAME=linux
PATH=/opt/hadoop/hadoop/sbin:/opt/hadoop/bin:/opt/bitnami/python/bin:/opt/bitnami/java/bin:/opt/bitnami/spark/bin:/opt/bitnami/spark/sbin:/opt/bitnami/common/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HADOOP_LOG_DIR=/var/log/hadoop
OS_ARCH=amd64
OLDPWD=/opt/bitnami/scripts/spark
_=/usr/bin/env

然后在.bashrc里添加需要的环境变量
在这里插入图片描述
然后重新激活:source /root/.bashrc
接着在外部尝试命令
在这里插入图片描述
在pycharm 需要在右下角重新选择一下环境,重新加载
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值