这篇文章以快速使用为目的,介绍一下自己对docker远程连接的理解。这次团队在服务器上给了一个docker镜像,我第一次接触docker,发现其实远程连接它和远程连接conda环境在使用上没有很大区别。
基本概念
(白话便于理解,不严谨之处请包涵。)
Docker镜像是容器的可执行文件,Docker容器是一个程序,在服务器上每个用户都可以运行一个自己的容器,初始化的容器提供的环境是完全一样的,保证了多次快速部署。
docker ps
# 查看正在运行的容器
# 观察一下PORTS,看看其他人都使用了什么端口
docker images
# 查看服务器上的镜像,找到自己要使用的镜像
运行容器
# 交互式启动容器,<REPOSITORY:TAG> 可用 <IMAGE ID>替换
docker run -it <REPOSITORY:TAG>
# 后台启动容器
# '-d' 为后台运行此时不会自动进入容器
# '-p' 设置端口,第一个数字是服务器的端口号,可以根据可用的端口号自行指定;
## 第二个数字是容器的端口号,其中22是ssh应用的默认端口
docker run -itd -p 8085:22 <IMAGE ID>
# 确认容器运行,查看容器ID
docker ps
# 进入容器,这条命令开启了一个交互式终端
docker exec -it <CONTAINER ID> /bin/bash
配置容器内环境
进入容器后的命令行提示符示例:root@<CONTAINER ID>:/workspace#
# 在容器内首先建议为root设置密码
passwd
# 安装必要的库
apt-get update
apt-get upgrade
apt-get install vim
apt-get install openssh-server
# 安装过程需要选择地理区位,随便填一下就好
# 修改ssh配置文件
vim /etc/ssh/sshd_config
密码是用来充分控制这个容器内环境的,在后面pycharm连接的时候会使用。
新启动的容器类似一台新机,安装vim工具是便于我们使用命令行修改ssh配置文件,安装openssh-server是为了使用ssh,这一步需要几分钟。
SSH配置文件
ssh配置文件初始为默认值,可能根据不同操作系统有不同情况。
只需要添加一行 PermitRootLogin yes 即可,(原始的#PermitRootLogin *****)可以删掉。
【vim使用小tip】 vim有编辑模式和命令模式,首先[i] 切换到编辑模式,修改后[esc]切换到命令模式,输入:wq 命令保存退出。
# 重启ssh服务
/etc/init.d/ssh restart
# 退出终端
exit
退出终端后,命令行提示符又恢复到服务器默认的,此时运行docker ps确认一下容器仍在运行。
docker ps
# 在服务器上测试能否连接到容器的ssh应用
ssh root@0.0.0.0 -p 8085
# 可能需要输入yes, 并输入刚刚设置的容器密码,之后会进入容器,同样可以exit退出。
完成这一步,服务器环境、容器环境已经配置好了。但是这样的一个容器,没有图形化界面查看起来很不方便。所以我们可以在本地创建一个容器内文件的映射。
Pycharm 配置
打开pycharm新建一个空白工程。首先配置python解释器,连接到容器中的解释器。
Tools>>Deployment>>Configuration, 先填Connection:
1. 首先我们测试一下能够正常连接服务器:host 填 服务器ip,port 先填22,用户、密码填自己在服务器上的身份(不是刚刚passwd配置的),test connection成功。
2. 然后,port 改填自己指定的端口(eg. 8085),用户改为root,密码改填刚刚在容器内配置的密码,test connection 成功。
然后再填Mapping, Deployment Path填到容器中的工程文件夹即可。
然后我们Downloads from ..., 就可以在本地同步容器中的文件啦(建议先查看大小)。