1. 程式人生 > >pycharm遠端除錯docker containers

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上顯示遠端結果。

配置流程

  1. 在遠端伺服器建立docker container
  2. 遠端伺服器ssh服務配置
  3. Pycharm連結遠端伺服器(檔案同步)
  4. 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 '[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啦~
只要在除錯的時候,選擇新建的遠端除錯編譯器就好啦~
終於可以將心思全部放在實現演算法上啦,撒花~~~