【GiantPandaCV導語】本文在讓vscode在遠端連接配接伺服器時候如本地般順滑地debug(Python) 的基礎上分享了另外一種可以直接通過vscode在docker環境中進行debug的方法。
如何讓vscode遠端連接配接伺服器上的docker環境進行debug
一般深度學習算法的訓練和調試環境都在伺服器端,想不做配置就直接使用vscode進行debug不太可能。而使用遠端伺服器時,一般用docker進行環境部署的情況比較多。
使用vscode遠端連接配接伺服器debug和遠端伺服器上的docker容器進行debug,兩者關鍵差別在于後者在docker容器建立時需要注意端口映射問題。本文主要講解vscode遠端連接配接伺服器上的docker環境進行debug的具體步驟。
注意:如果是使用vscode遠端連接配接伺服器debug,則無需執行步驟一,直接從步驟二中的2開始即可。
一、伺服器端的docker容器建立時需要注意的問題
建立容器時,一般按照如下指令建立。其中,端口映射參數:-p 主控端port:容器port。
sudo docker run --gpus all -it -d -p 8010:22 --name 容器名稱 -v 本地路徑或伺服器實體路徑:容器内路徑 -d 鏡像id /bin/bash
OPTIONS說明:
- -d: 背景運作容器,并傳回容器ID;
- -i: 以互動模式運作容器,通常與 -t 同時使用;
- -P: 随機端口映射,容器内部端口随機映射到主機的端口;
- -p: 指定端口映射,格式為:主機(宿主)端口:容器端口 ;
- -t: 為容器重新配置設定一個僞輸入終端,通常與 -i 同時使用;
- --name="nginx-lb": 為容器指定一個名稱;
- --volume , -v: 綁定一個卷。映射關系:本地路徑或伺服器實體路徑:容器内路徑;
上面的指令中**-p 8010:22**,就是将容器的22号端口(ssh服務端口)映射到主控端(伺服器)的8010端口。在本文中,因為需要使用ssh服務端口,是以,容器端口必須寫22。(主控端端口可以寫成其他值,但是也不能亂寫,防止端口沖突)。這樣,在後續的vscode配置中,需要将連接配接端口寫成主控端(伺服器端口),例如本文中的8010端口。下文中會介紹如何配置連接配接端口。
注意:在整個配置過程中,應該保持建立的docker容器處于運作狀态,友善後續調試。
二、docker容器内部相關配置
本文介紹的方法需要使用ssh服務進行通信,是以,需要在環境中安裝ssh。
1、進入容器中,使用如下指令修改root使用者密碼:
passwd
2、檢查容器内部是否安裝 openssh-server與openssh-client,若沒安裝,執行如下指令:
apt-get install openssh-serverapt-get install openssh-client
3、修改ssh配置檔案以下選項:
vim /etc/ssh/sshd_config
在末尾增加如下内容(直接複制即可):
#PermitRootLogin prohibit-password # 預設打開 禁止root使用者使用密碼登陸,需要将其注釋
RSAAuthentication yes #啟用 RSA 認證PubkeyAuthentication yes #啟用公鑰私鑰配對認證方式PermitRootLogin yes #允許root使用者使用ssh登入
4、啟動sshd服務
/etc/init.d/ssh restart
5、退出容器,連接配接測試
ssh [email protected] -p 8010 注意,此處應該是測試8010端口。
輸入密碼成功進入容器内部即配置成功。
三、在vscode上的相關配置
1、安裝remote-ssh插件
在vscode最左側應用“擴充”中搜尋remote-ssh插件,然後安裝。安裝完成之後,會在“擴充”圖示下方出現“遠端資料總管”圖示。如下圖所示:

在這裡插入圖檔描述
2、配置vscode的config檔案
單擊“遠端資料總管”圖示,然後單擊“配置”按鈕進行配置,此時vscode會顯示“Select SSH configuration file to update”,如下圖所示,選擇路徑中帶有“.ssh”的config檔案。
在這裡插入圖檔描述
填寫config檔案内容,注意按照如下格式填寫:
Host可以根據自己的喜好起一個标志名稱。HostName必須填寫需要遠端連接配接的伺服器IP位址。User此處因為遠端的是伺服器上配置的docker容器,預設使用者名是root,此處需要改下為root。
特别注意:由于需要遠端連接配接的是伺服器上的docker容器,而且前面提到:ssh伺服器的22号端口已經映射為8010,是以,務必增加一個Port,填寫自己映射的端口。如果隻是遠端伺服器,不需要用docker容器,則,不需要增加Port這一行。配置完成後,儲存配置。
在這裡插入圖檔描述
3、開啟遠端連接配接
如下圖所示,config檔案中寫的Host名稱alias就會顯示在最左側。此時,單擊“建立連接配接”按鈕,vscode會重新打開一個視窗,提示輸入遠端伺服器的密碼,注意,此時必須填入docker容器中建立的使用者密碼。
在這裡插入圖檔描述
在如下圖中輸入使用者密碼,回車即可。
在這裡插入圖檔描述
回車之後,可能會提示選擇遠端伺服器的平台是哪一種系統類型,選項有linux\windows\MAC。應該選擇vscode安裝的系統平台類型。
選擇完成之後,回車即可。此時,在vscode的“終端”視窗可以看到進入docker容器的指令行格式。如下圖所示:
在這裡插入圖檔描述
在“終端”視窗可以檢視以下遠端連接配接的環境是否正确。
打開遠端伺服器上的代碼,可以在代碼任意行最左側打斷點,按F5快捷鍵可以debug運作。
四,參考文獻
- https://blog.csdn.net/hanchaobiao/article/details/84069299