1. 为什么你需要PyCharm连接Docker容器?
如果你是一个Python开发者,我猜你一定遇到过下面这些让人头疼的场景:项目依赖的某个库在Windows上死活装不上,只能在Linux环境里跑;团队里每个人的开发环境五花八门,你代码跑得好好的,同事一拉过去就报错;或者你想在本地用Windows或macOS写代码,但最终的生产环境是Linux服务器,环境差异导致调试起来异常麻烦。
传统的解决办法要么是搞一台云服务器,要么是在本地装个虚拟机。但云服务器有网络延迟,操作起来总感觉隔了一层;虚拟机又笨重,吃内存还拖慢电脑。这几年我折腾下来,发现用Docker容器来搭建一个与生产环境一致的、隔离的开发环境,再用PyCharm通过SSH直接连进去开发和调试,是体验最顺滑的方案。
简单来说,这个方案的核心优势就三点:环境隔离、一致性、和本地开发的便利性。你可以在本地电脑上,用熟悉的PyCharm界面,直接操作一个运行在Docker容器里的、纯净的Linux Python环境。代码写完后,直接就能在这个“准生产环境”里运行和调试,大大减少了“在我机器上好好的”这类问题。
听起来是不是有点复杂?别担心,我刚开始也觉得配置起来肯定很麻烦。但实际走一遍你会发现,整个过程就像搭积木,每一步都很清晰。接下来,我就手把手带你从零开始,构建一个带SSH服务的Python Docker镜像,并让PyCharm成功连接上它。我会把每一步的原理、可能踩的坑以及我的实测经验都分享给你。
2. 打造你的专属开发容器:从零构建支持SSH的Python镜像
万事开头难,但第一步我们得把“房子”盖好。这里的目标是创建一个Docker镜像,它既要有一个完整的Python运行环境,还要开启SSH服务,允许我们从外部登录。我推荐从centos:7这个经典又稳定的基础镜像开始,当然你用Ubuntu也行,步骤大同小异。
2.1 创建基础SSH镜像
首先,我们需要一个安装了OpenSSH服务器的CentOS基础镜像。打开你的终端(Windows用PowerShell或CMD,Mac/Linux用Terminal),跟着我一步步来。
# 1. 拉取CentOS 7基础镜像
docker pull centos:7
# 2. 启动一个临时容器并进入
docker run -it --name centos-ssh-builder centos:7 /bin/bash
现在你已经进入了容器的bash命令行。在容器内,执行以下命令来安装和配置SSH:
# 3. 安装必要的软件:openssh-server和passwd
yum install -y openssh-server passwd
# 4. 为root用户设置一个密码,比如我这里设为`your_secure_password`,你务必改成自己的
passwd
# 接下来会提示你输入新密码,输入两次。
# 5. 生成SSH服务需要的密钥文件
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''
# 6. 修改SSH配置,允许root用户通过密码登录
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config
# 7. 启动SSH服务(临时测试用)
/usr/sbin/sshd
完成以上步骤后,先别退出容器。打开另一个终端窗口,测试一下SSH是否能连通。首先获取容器的IP地址:
docker inspect -f '{
{range .NetworkSettings.Networks}}{
{.IPAddress}}{
{end}}' centos-ssh-builder
假设得到的IP是172.17.0.2,那么测试连接:
ssh root@172.17.0.2
# 输入你刚才设置的密码,应该就能登录进容器了。
测试成功后,回到第一个终端,退出容器(输入exit)。现在,我们将这个配置好的容器
879



被折叠的 条评论
为什么被折叠?



