您好,登錄后才能下訂單哦!
pycharm與ssh遠程訪問服務器docker?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
pycharm與ssh遠程訪問服務器docker
  背景:有些實驗需要在服務器上完成,因此為了快速便利地在本地調試遠程服務器上的代碼,需要完成本地與遠程服務器的直連。然而現階段諸多服務器上安裝有docker,通常需要在docker內完成調試代碼,因此本文主要提供遠程訪問服務器docker的配置方法。
  需要工具及說明:
1、配置遠程服務器docker
第一步:購置配置服務器(如果已有服務器跳過)
  可自行在阿里云或騰訊云等服務器提供商購買centos服務器,或使用公司或學校提供的服務器,但需要注意的是,如果公司或學校的服務器需要在VPN環境內訪問,則需要提前連接VPN后再訪問服務器。
第二步:安裝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配置文件
博主完成第二步后,依然無法遠程連接,因此經過查詢后發現,需要修改相關配置文件:
執行下面命令打開ssh配置文件:
vim /etc/ssh/sshd_config
如果vim沒有安裝,則執行:
apt install vim
打開后,修改文件:
AddressFamily any 前面的 # 刪除
修改PermitRootLogin yes 前面的 # 刪除
修改PasswordAuthentication yes 前面的 # 刪除
在vim編輯器中,執行命令保存并退出:
:wq
最后重啟ssh服務:
service ssh restart
詳細可參考參考文獻【1】和【3】
3、ssh測試
配置完后,按理來說應該完成了服務器的設置,下面可以進行簡單的測試,例如
(1)在宿主機中執行命令查看當前端口,可知有8848端口
sudo netstat -ntlp
(2)在宿主機上執行命令,也可以查看當前容器是否存在對應的端口映射關系:
sudo docker port [容器id或自己起的名字] 22
例如,博主執行后返回0.0.0.0:8848,說明成功
(3)進入容器內,執行:
python3
進入python環境,再依次執行
import torch
print(torch.cuda.is_available())
如果返回 True,說明該docker可以使用GPU了。
(4)遠程訪問試一試,任意在一臺聯網的機器上(若在局域網內,則需要連VPN)執行:
ssh [第八步創建的用戶名]@[你的服務器地址] -p [自己定義的端口號]
如果顯示輸入密碼,說明連接成功,輸入密碼后即可直接進入對應的容器。例如博主執行:
ssh root@10.11.6.13 -p 8848
顯示如下信息說明已經連接成功。
4、pycharm測試
如果使用pycharm直接訪問遠程服務器docker,則可以在pycharm上進行相關設置:
第十一步:安裝pycharm(已安裝直接跳過)
需要安裝專業版的pycharm,安裝后,可通過激活碼、或直接去官網使用學生郵箱注冊一個賬號可免費使用一年,安裝后進入pycharm
詳細可參考文末參考文獻【7】
第十二步:設置ssh
如下圖,依次點擊后進入菜單:
然后新增一個連接,由左向右依次點擊:
進入編輯ssh界面,填寫配置信息:
點擊“Test Connection”測試一下,如果success則說明pycharm也可以連接遠程容器了:
返回到上一個頁面,選擇配置好的ssh后,可以再選擇需要pycharm關聯到容器內的具體的目錄。例如博主直接選擇在創建容器時域宿主機進行關聯的目錄/wjn作為pycharm可更新上傳的位置,最后保存即可。
至此完成所有配置工作,在pycharm可以自由地與服務器docker內的項目進行調試了
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。