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 主機埠:容器埠
準備工作都搞定了麼?
開始幹活咯~
二、 遠端伺服器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 '[email protected]\s*required\s*[email protected] optional [email protected]' -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 [email protected]<你伺服器的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啦~
只要在除錯的時候,選擇新建的遠端除錯編譯器就好啦~
終於可以將心思全部放在實現演算法上啦,撒花~~~