pycharm遠程調試docker containers
現在做深度學習相關的工作,所以不可避免的要使用到GPU.但是GPU在遠程服務器,調試真的很暈。
剛開始的使用2D網絡的時候在本地還能調試一下,但是自從使用了3D網絡,本地沒法調試。只能本地改完代碼,上傳服務器,再用服務器來跑新的代碼,手動加print調試。23333
為了避免再做這麽傻的事,要把遠程調試的配置記錄下來。以後直接用Pycharm調試遠程服務器裏的docker container,美滋滋調試代碼
準備
- Ubuntu 16.04(遠程服務器)
- Mac或Ubuntu(本地)
- docker(遠程服務器)
- openssh-server(遠程服務器)
- Pycharm profession版(本地)
- -ssh(本地)
原理
本地利用SSH鏈接遠程服務器交互數據,在本地Pycharm上顯示遠程結果。
配置流程
- 在遠程服務器創建docker container
- 遠程服務器ssh服務配置
- Pycharm鏈接遠程服務器(文件同步)
- Pycharm鏈接遠程的docker container (配置遠程編譯器)
一、遠程服務器創建docker container
在這步之前,你應該安裝好docker並且下載好了相應的image。(如果你有GPU,那麽同時需要配置好cuda)
如果你還沒用過Docker,那麽你需要先看看下面的鏈接,了解docker的原理。對配置遠程調試非常有幫助。在創建容器時,需要加入端口映射 -p 主機端口:容器端口
Docker GitBook
準備工作都搞定了麽?
開始幹活咯~
二、 遠程服務器ssh服務配置
接下來需要配置遠程服務器的ssh服務。
第一步,我們需要在遠程服務器上安裝openssh-server
# Ubuntu
$ apt update && apt install openssh-server
- 1
- 2
Ps:這裏註意,不僅僅是遠程服務器上要安裝ssh服務,同時遠程服務器上的docker container也內也需要安裝openssh-server。
第二步,安裝完成以後需要配置ssh服務
# 次配置在docker container中完成
$ echo ‘root:test‘ | chpasswd
# 將Root的密碼修改為test
$ sed -i ‘s/PermitRootLogin prohibit-password/PermitRootLogin yes/‘ /etc/ssh/sshd_config
# 允許使用root身份登錄
$ sed ‘s@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g‘ -i /etc/pam.d/sshd
$ echo "export VISIBLE=now" >> /etc/profile
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
對於sed命令,如果需要學習可以查看
Sed命令詳解
第三步,配置好ssh服務之後重啟ssh服務
$ service ssh restart
- 1
第四步,測試docker container中ssh服務端口在遠程服務器上的映射
# 此操作在遠程服務器
$ docker port <your container name> 22
# 此操作將查看docker container中端口22,在遠程服務器上端口的映射
# 輸出結果如下所示
0.0.0.0:8022
# 表明只要ssh鏈接遠程服務器的8022端口,實際是鏈接docker container中的22端口。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
第五步,測試是否能夠使用ssh鏈接docker container
$ ssh root@<你服務器的ip地址> -p 8022
# 密碼就是剛剛重新設置的test
- 1
- 2
如果能夠鏈接成功到docker container就完成了此次ssh的配置。
PS:如果失敗請按以下順序檢查
1.ssh的端口配置是否正確?(包括服務器和docker container)
2.是否開啟了防火墻,將端口禁用?
到這裏已經完成一大半啦。之後的配置就相對簡單啦。
Pycharm鏈接遠程docker container(文件同步)
現在開始配置Pycharm
第一步,配置SFTP
在導航欄中 Tools>Depolyment>Configuration中添加配置SFTP。
如圖
添加配置SFTP,點擊彈窗左上角的+號。選擇SFTP,根據自己的實際情況進行配置。
PS:這裏的root密碼就是之前設置好的test
第三步,配置SFTP中的mapping
都配置完之後。打開自動上傳功能
Tools>Depolyment>Automatic Upload(always)
本地修改好代碼只要按保存鍵就自動將本地代碼上傳至遠程docker container中。
到這裏已經配置好代碼的自動同步了。還差最後一步,遠程調試就配置成功。
Pycharm鏈接遠程docker container (配置遠程編譯器)
打開Pycharm專業版的配置
添加新編譯器(遠程docker container編譯器)
在打開的頁面選擇之前配置好的SFTP
PS:
通常選擇完之後羨慕有兩個選項
Create: 新建SFTP
Move: 將選擇的SFTP作為編譯器的SFTP
通常選擇Move就好
最後配置docker container的編譯器位置,還有項目位置的映射。
完成這一步就徹底搞定Pycharm遠程調試Docker container啦~
只要在調試的時候,選擇新建的遠程調試編譯器就好啦~
終於可以將心思全部放在實現算法上啦,撒花~~~
pycharm遠程調試docker containers