深度学习炼丹师必备技能——在实验室服务器的docker容器中开启ssh服务
Step1利用CentOS基础镜像,创建一个docker容器,主要这里要指定端口映射,必须要映射到容器内的22端口,否则无法用ssh登录容器。docker run -it -p 3361:22 -p 3362:8888 centos /bin/bash注意:这里的3361和3362端口你服务器需要开放,不然后面也会无法登录。我用的是阿里云服务器,是在防火墙中开放了这两个端口Step2安装 open
很多新手小白在做深度学习实验时,可能需要用Pycharm远程登录服务器中的docker容器,但是呢在配置时总是遇到各种各样的麻烦。我也曾被困扰过,但经过一段时间的摸索,总算弄清楚了配置的方法。
本文会详细介绍如何在docker容器内开启ssh服务,以便之后可以用Pycharm远程登录服务器中的docker容器,从而进行实验代码的调试或debug。
Step1
利用docker镜像(如centos),创建一个docker容器。这里要指定端口映射,必须要映射到容器内的22端口,否则无法用ssh登录容器。
docker run -it -p 3361:22 -p 3362:8888 centos /bin/bash
注意:这里的3361和3362端口你服务器需要开放,不然后面也会无法登录。我用的是阿里云服务器,是在防火墙中开放了这两个端口
Step2
安装 openssl, openssh-server 等工具
yum install -y openssl openssh-server
Step3
如果要正常启动ssh服务,/var/run/sshd 必须存在,手动创建并启动ssh服务:
mkdir -p /var/run/sshd
/usr/sbin/sshd -D &
此时可能会出现如下报错:
解决方法:在docker容器内的命令行依次输入如下代码
ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
再次执行
/usr/sbin/sshd -D &
成功开启ssh服务
查看sshd是否监听22端口
yum install -y net-tools
netstat -apn | grep ssh
Step4
修改ssh配置文件
在docker容器内的命令行输入:vim /etc/ssh/sshd_config
设置ssh的端口:Port 22
附:如果你希望用3030端口登录docker的ssh,那么需要把Port改成3030
将 PermitRootLogin 的 no 改为 yes,即允许root用户登录
Step5
重启ssh服务
/usr/sbin/sshd -D &
用上面方法重启,可能还是无法用root登录
如果不行,可以换下面命令进行ssh重启
/etc/init.d/ssh restart
查看sshd是否监听22端口
Step6
给docker容器添加密码
我们必须要给docker容器设置密码,后面才能以ssh的方式登录容器
在容器内使用 passwd 命令创建密码,若没有这个命令,则用 yum install passwd 进行安装
实战演练
利用ssh直接登录docker容器
ssh root@10.11.6.14 -p 3361
这里的root指的是docker容器的root用户,不是服务器的用户名,密码是你上面设的docker容器的密码
Pycharm远程连接docker容器
常见问题:Connection refused
出现Connection refused大概率是因为你的docker容器被stop了,那ssh服务自然没有开启,那就不能登录
解决方法:docker start 容器,然后用 /etc/init.d/ssh restart 开启ssh服务
开启成功的话会显示下面内容
Restarting OpenBSD Secure Shell server sshd [OK]
2021/07/28 星期三 最新示例:使用我的镜像创建docker容器
镜像名:shwei/pytorch:1.0
我的这个shwei/pytorch:1.0镜像(14.5GB)包含了所有基础的配置,如vimrc,tmux, zshrc, aliases等
(1)运行下面命令创建容器:
docker run --gpus all -it -h tesla551 -p 3030-3050:3030-3050 --privileged=true -v /newhome/xxx/docker-data:/root/container-data --name=xxx shwei/pytorch:1.0 /bin/bash
(2)在docker容器内的命令行输入:vim /etc/ssh/sshd_config,设置ssh的端口:Port 3030
(3)启动ssh服务 (alias ressh):/etc/init.d/ssh restart
这时就可以用 ip:3030 端口登录docker容器
更多推荐
所有评论(0)