如何在Windows上访问Ubuntu服务器的Docker容器终端
以下是分步指南,帮助您在Windows上访问Ubuntu服务器的Docker容器终端,并通过PyCharm连接容器内的Python环境:
一、访问Docker容器终端
方法1:通过SSH直接访问容器(需容器内安装SSH)
-
容器内安装SSH服务(若尚未安装):
# 进入容器(假设容器名称为pytorch_container) docker exec -it pytorch_container /bin/bash # 容器内操作:更新并安装SSH apt update && apt install -y openssh-server echo 'root:your_password' | chpasswd # 设置root密码(不安全,仅测试用) service ssh start # 退出容器 exit -
Windows访问容器终端:
- 使用 PuTTY 或 Windows Terminal 连接:
ssh root@<Ubuntu服务器IP> -p <容器映射的SSH端口> - 需在启动容器时映射SSH端口(默认22可能冲突):
docker run -it -p 2222:22 --name pytorch_container pytorch/pytorch
- 使用 PuTTY 或 Windows Terminal 连接:
方法2:通过宿主机间接访问(推荐)
-
SSH到Ubuntu服务器:
ssh username@ubuntu_server_ip -
进入运行中的容器:
docker exec -it pytorch_container /bin/bash
二、PyCharm连接容器Python环境(需Professional版)
步骤1:配置SSH远程解释器
-
确保容器Python路径已知:
# 进入容器查看Python路径 docker exec -it pytorch_container which python # 典型路径:/usr/local/bin/python 或 /opt/conda/bin/python -
PyCharm设置:
- 打开项目 →
File > Settings > Project: <项目名> > Python Interpreter - 点击齿轮按钮 →
Add Interpreter > On SSH... - SSH配置:
- Host:
ubuntu_server_ip - Port:默认22(或自定义SSH端口)
- Username:Ubuntu服务器用户名
- Auth:选择密码或私钥
- Host:
- Python解释器路径:
- 输入容器内的Python路径(如
/usr/local/bin/python)
- 输入容器内的Python路径(如
- 打开项目 →
步骤2:配置路径映射(Optional)
- 在
Interpreter设置中,添加本地项目路径与容器内路径的映射:- Local path:
C:\your_project(Windows路径) - Remote path:
/app(容器内项目路径)
- Local path:
步骤3:验证环境
- 在PyCharm中新建Python文件,输入测试代码:
import torch print(torch.__version__) - 运行并检查输出是否为容器内的PyTorch版本。
三、替代方案(社区版PyCharm)
若使用PyCharm Community Edition(不支持远程解释器):
- 通过Docker API远程连接:
- 在Ubuntu服务器上配置Docker远程访问:
# 编辑docker服务配置 sudo nano /lib/systemd/system/docker.service # 修改ExecStart行,添加:-H tcp://0.0.0.0:2375 ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 # 重启Docker sudo systemctl daemon-reload sudo systemctl restart docker - PyCharm设置:
- 安装插件:
Docker(内置) Settings > Build, Execution, Deployment > Docker- 添加新的Docker配置,选择
TCP socket,输入:tcp://ubuntu_server_ip:2375 - 通过
Services面板管理容器,直接右键容器 →Connect Shell进入终端。
- 安装插件:
- 在Ubuntu服务器上配置Docker远程访问:
四、注意事项
- 安全性:
- 避免直接暴露Docker API端口(2375),建议使用SSH隧道或VPN。
- 容器内使用SSH时,建议创建非root用户并配置密钥认证。
- 性能:
- 远程解释器可能延迟较高,建议将代码同步到容器内运行。
- 依赖同步:
- 使用
requirements.txt或Dockerfile确保容器环境一致性。
- 使用