这个教程需要读者有一定的docker基础,能用ssh连上实验室的服务器(也很简单)。
实验室使用docker容器,每个人在自己的容器里跑,这样不管怎么弄,坏的只有自己的容器,其他人正常跑。个人理解docker容器是一个轻量级的虚拟机,非常非常地轻量,但是具体有多轻,我不知道这个度。
输入
docker image ls
docker container ls
查看正在运行的容器
如果你想创建的容器是anaconda3,但是你本地没有这个镜像,就需要拉下来,网站是:https://hub.docker.com/下拉代码
docker pull continuumio/anaconda3
拉好之后,anaconda就到本地了,用之前的镜像查看命令就可以查看了。
这个时候创建自己的container,输入(这里只是以anaconda3为例子)
docker run --name yourname -p 9999:22-it -v /home/tom/DISK/DISK 1/:/home/ continuumio/anaconda3 /bin/bash
其中 -name yourname :container名字为yourname
-p:指定端口映射,格式为:宿主机端口:容器端口。
注意,这里的宿主机端口可以是任意的,找个没人用的端口,但是这里的容器端口一定要是22!
容器端口一定要是22!容器端口一定要是22!
重要的事情说三遍。我自己的经历,如果不是22的话,他docker里面的ssh服务会疯狂报错,且不可修复。我百度了一下22有什么说法,好像是因为22是ssh的默认端口。但是我在其他教程里没有看到这个关于22的强调,很多都是任意端口映射。可能他们可以,我不行。理论上是可以把ssh的端口改成其他编号的,但是我试的不行。
-v:挂载目录,冒号前表示的是要挂载到宿主机的地址,是绝对地址,冒号后是容器内部地址,建议挂载到/home/tom/DISK/DISK1/下
continuumio/anaconda3是image的名字,在你想要的image下创建这个container
/bin/bash为初始指令,创建好这个container后直接bash运行
如果需要用到gpu,请在创建时添加–runtime = nvidia
docker run --runtime=nvidia --name yourname-p 9999:22-it -v /home/tom/DISK/DISK1/:/home/ airaria/pytorch0.4.1 /bin/bash
启动创建好的docker容器,进入页面之后直接修改root密码
passwd
给容器安装openssh-server和openssh-client
apt-get install openssh-server
apt-get install openssh-client
如果是第一次的话,可能会报错
是因为、etc/apt/source.list中的源比较旧,需要更新,输入命令:
apt-get -y update
之后重新执行openssh的两个命令
执行完毕之后,修改ssh配置文件
vim /etc/ssh/sshd_config
打开sshd_config文件,在文件最后添加
PermitRootLogin yes #允许root用户使用ssh登录
重启ssh服务
/etc/init.d/ssh restart
docker就配置好了
退出容器,连接测试,注意,连接容器的时候需要保证容器是运行的,并且ssh服务时运行的,如果遇到connection refused情况试试重启ssh服务
这个就可以在自己的windows电脑上使用了
win+r进入cmd界面 输入
ssh root@127.0.0.1 -p 8080
root:容器内部系统的root账号,不是服务器的用户账号
127.0.0.1:服务器本机ip
-p 端口号:这里的端口是启动容器时映射的主机端口号9999,不是容器的端口22
这里会要输入密码,这个密码就是我们设置的root的密码。
1.configuration配置远程连接
这个步骤2中设置的密码就是root的密码,记得要保存密码,不然下一次还得重新配置
本地路径和在容器里的路径
上传本地代码数据到docker容器中去
上传完代码数据之后,需要选择设置python编译器:
设置好就可以run代码了
我用的是英伟达的pytorch镜像,里面有conda,可以自己换环境,创建新解释器,和anaconda一样用,我想换一个新的env怎么办呢
配置过程和第4步一样,也是要配置SFTP文件,唯一不同的是最后一步
这里选择容器内部的python编译器,他的默认envs是在/opt/conda/bin/python下面,但是你自己在conda里面新建的env的解释器是在/opt/conda/envs/py3/bin/python
这里的envs是环境,可能有s可能没有,具体读者自己看一下,py3是我创建的环境名。
到此,pycharm连接远程docker就结束了。
配置环境搞了我很多天,特别是那个端口号22,恶心了我3 5天,基本上就是卡在这里,给刷到我这篇文章的读者提个醒。
我在配置环境的时候找了很多教程,主要的文章是pycharm连接远程docker。图也是用这个文章里面的,因为我懒得截了。这里还有dockerfile连接的方式,我暂时用不到,就没看了。
如果有读者还想用jupyter notebook ,可以看这个远程连接docker,使用jupyter notebook。这个jupyter notebook比较简单,没什么坑