在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
背景:有些实验需要在服务器上完成,因此为了快速便利地在本地调试远程服务器上的代码,需要完成本地与远程服务器的直连。然而现阶段诸多服务器上安装有docker,通常需要在docker内完成调试代码,因此本文主要提供远程访问服务器docker的配置方法。 需要工具及说明:
1、配置远程服务器docker 第一步:购置配置服务器(如果已有服务器跳过) 第二步:安装docker(如果已有docker则跳过) sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 详细可参考文末参考文献【2】 注:sudo命令是指使用最高权限root执行,如果当前账户是root则无需sudo命令。 第三步:拉取镜像 镜像官方网站是 Docker Hub,在上面可以找到符合自己生产需要的镜像。我们以pytorch为例,拉取镜像: sudo docker pull pytorch/pytorch 即可下载相关文件,可通过下面命令查看已经拉取的镜像: sudo docker images 详细可参考文末参考文献【6】 第四步:创建容器 获取镜像后,需要根据镜像实例化一个容器,此处实例化容器使用run命令: ssudo docker run -p [自选端口号]:22 --gpus all -itd --name [自己起个名字] -v [宿主机(本地)的目录]:[自定义创建好的容器内的目录] /bin/bash 执行上面命令可以完成实例化一个容器,其中的相关参数有:
另外 -i ,-t 和 -d 可同时写在一起,例如 -it ,-itd 。 sudo docker run -p 8848:22 --gpus all -itd --name wjn -v /home/gm/wangjianing/docker:/wjn pytorch/pytorch /bin/bash 其表示实例化镜像pytorch/pytorch为一个容器,其占用宿主机端口号为8848,并与ssh端口22保持关联监听,可使用所有gpu,名称为“wjn”,宿主机的地址“/home/gm/wangjianing/docker”与容器内目录“/wjn”保持关联,使用/bin/bash作为命令脚本。 创建完之后,可查看所有已经实例化的容器 sudo docker ps 第五步:开通端口 如果端口有防火墙保护,则需要自行开通: sudo /sbin/iptables -I INPUT -p tcp --dport 8848 -j ACCEPT 第六步:启动容器 启动容器,以使得该容器处在运行状态: sudo docker start [容器id或自己起的名字] 例如刚才创建好的容器编号为“5621fade441e”,名称为“wjn”,则可以执行: sudo docker start 5621fade441e 或 sudo docker start wjn 启动后,可通过: sudo docker ps -a 查看所有已启动并运行的容器,如图: 注:至此应该可以看到该容器的相关信息, 特别注意PORTS属性,需要有端口信息才能判断当前创建的容器是可以通过端口访问的,如果没有此信息,则无法完成远程访问容器,且目前无法直接修改已创建好的容器的端口,所以只能重新创建。 第七步:进入容器 进入容器可使用命令: sudo docker exec -it [容器id或自己起的名字] /bin/bash 2、容器配置ssh 博主之前以为创建好docker之后,就可以直接通过ssh访问该容器了,但是后来发现还需要进入容器内进行一系列的ssh配置,主要步骤如下: 第八步:安装ssh: 进入刚创建好的容器,先执行如下命令: apt update apt install -y openssh-server 然后建立一个配置文件夹并进行必要的配置: mkdir /var/run/sshd echo ‘root:passwd' | chpasswd 注意,这里的root表示待会要远程访问的用户名,passwd为访问密码,可自行设置,例如本人设置的为: echo ‘root:123456' | chpasswd 第九步:设置登录权限: 执行下面三行命令设置权限 sed -i ‘s/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config sed ‘s@session\srequired\spam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd echo “export VISIBLE=now” >> /etc/profile 第十步:修改ssh配置文件 博主完成第二步后,依然无法远程连接,因此经过查询后发现,需要修改相关配置文件: vim /etc/ssh/sshd_config 如果vim没有安装,则执行: apt install vim 打开后,修改文件: 在vim编辑器中,执行命令保存并退出:
最后重启ssh服务: service ssh restart 详细可参考参考文献【1】和【3】 3、ssh测试 配置完后,按理来说应该完成了服务器的设置,下面可以进行简单的测试,例如 sudo netstat -ntlp (2)在宿主机上执行命令,也可以查看当前容器是否存在对应的端口映射关系: sudo docker port [容器id或自己起的名字] 22 例如,博主执行后返回0.0.0.0:8848,说明成功 (3)进入容器内,执行:
进入python环境,再依次执行 import torch print(torch.cuda.is_available()) 如果返回 True,说明该docker可以使用GPU了。 (4)远程访问试一试,任意在一台联网的机器上(若在局域网内,则需要连VPN)执行:
如果显示输入密码,说明连接成功,输入密码后即可直接进入对应的容器。例如博主执行: ssh [email protected] -p 8848 显示如下信息说明已经连接成功。 4、pycharm测试 如果使用pycharm直接访问远程服务器docker,则可以在pycharm上进行相关设置: 第十一步:安装pycharm(已安装直接跳过) 需要安装专业版的pycharm,安装后,可通过激活码、或直接去官网使用学生邮箱注册一个账号可免费使用一年,安装后进入pycharm 详细可参考文末参考文献【7】 第十二步:设置ssh 如下图,依次点击后进入菜单: 然后新增一个连接,由左向右依次点击: 进入编辑ssh界面,填写配置信息: 点击“Test Connection”测试一下,如果success则说明pycharm也可以连接远程容器了: 返回到上一个页面,选择配置好的ssh后,可以再选择需要pycharm关联到容器内的具体的目录。例如博主直接选择在创建容器时域宿主机进行关联的目录/wjn作为pycharm可更新上传的位置,最后保存即可。 至此完成所有配置工作,在pycharm可以自由地与服务器docker内的项目进行调试了 参考文献: 【1】SSH客户端远程登陆Linux服务器密码总是错误问题 到此这篇关于pycharm与ssh远程访问服务器docker的详细教程的文章就介绍到这了,更多相关pycharm远程访问docker内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论