如何讓vscode遠(yuǎn)程連接服務(wù)器上的docker環(huán)境進(jìn)行debug
【GiantPandaCV導(dǎo)語】本文在讓vscode在遠(yuǎn)程連接服務(wù)器時(shí)候如本地般順滑地debug(Python) 的基礎(chǔ)上分享了另外一種可以直接通過vscode在docker環(huán)境中進(jìn)行debug的方法。
如何讓vscode遠(yuǎn)程連接服務(wù)器上的docker環(huán)境進(jìn)行debug
一般深度學(xué)習(xí)算法的訓(xùn)練和調(diào)試環(huán)境都在服務(wù)器端,想不做配置就直接使用vscode進(jìn)行debug不太可能。而使用遠(yuǎn)程服務(wù)器時(shí),一般用docker進(jìn)行環(huán)境部署的情況比較多。
使用vscode遠(yuǎn)程連接服務(wù)器debug和遠(yuǎn)程服務(wù)器上的docker容器進(jìn)行debug,兩者關(guān)鍵區(qū)別在于后者在docker容器創(chuàng)建時(shí)需要注意端口映射問題。本文主要講解vscode遠(yuǎn)程連接服務(wù)器上的docker環(huán)境進(jìn)行debug的具體步驟。
注意:如果是使用vscode遠(yuǎn)程連接服務(wù)器debug,則無需執(zhí)行步驟一,直接從步驟二中的2開始即可。
一、服務(wù)器端的docker容器創(chuàng)建時(shí)需要注意的問題
創(chuàng)建容器時(shí),一般按照如下命令創(chuàng)建。其中,端口映射參數(shù):-p 宿主機(jī)port:容器port。
sudo docker run --gpus all -it -d -p 8010:22 --name 容器名稱 -v 本地路徑或服務(wù)器物理路徑:容器內(nèi)路徑 -d 鏡像id /bin/bash
OPTIONS說明:
-d: 后臺(tái)運(yùn)行容器,并返回容器ID; -i: 以交互模式運(yùn)行容器,通常與 -t 同時(shí)使用; -P: 隨機(jī)端口映射,容器內(nèi)部端口隨機(jī)映射到主機(jī)的端口; -p: 指定端口映射,格式為:主機(jī)(宿主)端口:容器端口 ; -t: 為容器重新分配一個(gè)偽輸入終端,通常與 -i 同時(shí)使用; --name="nginx-lb": 為容器指定一個(gè)名稱; --volume , -v: 綁定一個(gè)卷。映射關(guān)系:本地路徑或服務(wù)器物理路徑:容器內(nèi)路徑;
上面的命令中**-p 8010:22**,就是將容器的22號(hào)端口(ssh服務(wù)端口)映射到宿主機(jī)(服務(wù)器)的8010端口。在本文中,因?yàn)樾枰褂胹sh服務(wù)端口,所以,容器端口必須寫22。(宿主機(jī)端口可以寫成其他值,但是也不能亂寫,防止端口沖突)。這樣,在后續(xù)的vscode配置中,需要將連接端口寫成宿主機(jī)(服務(wù)器端口),例如本文中的8010端口。下文中會(huì)介紹如何配置連接端口。
注意:在整個(gè)配置過程中,應(yīng)該保持創(chuàng)建的docker容器處于運(yùn)行狀態(tài),方便后續(xù)調(diào)試。
二、docker容器內(nèi)部相關(guān)配置
本文介紹的方法需要使用ssh服務(wù)進(jìn)行通信,因此,需要在環(huán)境中安裝ssh。
1、進(jìn)入容器中,使用如下命令修改root用戶密碼:
passwd
2、檢查容器內(nèi)部是否安裝 openssh-server與openssh-client,若沒安裝,執(zhí)行如下命令:
apt-get install openssh-serverapt-get install openssh-client
3、修改ssh配置文件以下選項(xiàng):
vim /etc/ssh/sshd_config
在末尾增加如下內(nèi)容(直接復(fù)制即可):
#PermitRootLogin prohibit-password # 默認(rèn)打開 禁止root用戶使用密碼登陸,需要將其注釋
RSAAuthentication yes #啟用 RSA 認(rèn)證PubkeyAuthentication yes #啟用公鑰私鑰配對(duì)認(rèn)證方式PermitRootLogin yes #允許root用戶使用ssh登錄
4、啟動(dòng)sshd服務(wù)
/etc/init.d/ssh restart
5、退出容器,連接測(cè)試
ssh [email protected] -p 8010 注意,此處應(yīng)該是測(cè)試8010端口。
輸入密碼成功進(jìn)入容器內(nèi)部即配置成功。
三、在vscode上的相關(guān)配置
1、安裝remote-ssh插件
在vscode最左側(cè)應(yīng)用“擴(kuò)展”中搜索remote-ssh插件,然后安裝。安裝完成之后,會(huì)在“擴(kuò)展”圖標(biāo)下方出現(xiàn)“遠(yuǎn)程資源管理器”圖標(biāo)。如下圖所示:

2、配置vscode的config文件
單擊“遠(yuǎn)程資源管理器”圖標(biāo),然后單擊“配置”按鈕進(jìn)行配置,此時(shí)vscode會(huì)顯示“Select SSH configuration file to update”,如下圖所示,選擇路徑中帶有“.ssh”的config文件。

填寫config文件內(nèi)容,注意按照如下格式填寫:
Host可以根據(jù)自己的喜好起一個(gè)標(biāo)志名稱。HostName必須填寫需要遠(yuǎn)程連接的服務(wù)器IP地址。User此處因?yàn)檫h(yuǎn)程的是服務(wù)器上配置的docker容器,默認(rèn)用戶名是root,此處需要改下為root。
特別注意:由于需要遠(yuǎn)程連接的是服務(wù)器上的docker容器,而且前面提到:ssh服務(wù)器的22號(hào)端口已經(jīng)映射為8010,因此,務(wù)必增加一個(gè)Port,填寫自己映射的端口。如果只是遠(yuǎn)程服務(wù)器,不需要用docker容器,則,不需要增加Port這一行。配置完成后,保存配置。

3、開啟遠(yuǎn)程連接
如下圖所示,config文件中寫的Host名稱alias就會(huì)顯示在最左側(cè)。此時(shí),單擊“新建連接”按鈕,vscode會(huì)重新打開一個(gè)窗口,提示輸入遠(yuǎn)程服務(wù)器的密碼,注意,此時(shí)必須填入docker容器中創(chuàng)建的用戶密碼。

在如下圖中輸入用戶密碼,回車即可。

回車之后,可能會(huì)提示選擇遠(yuǎn)程服務(wù)器的平臺(tái)是哪一種系統(tǒng)類型,選項(xiàng)有l(wèi)inux\windows\MAC。應(yīng)該選擇vscode安裝的系統(tǒng)平臺(tái)類型。
選擇完成之后,回車即可。此時(shí),在vscode的“終端”窗口可以看到進(jìn)入docker容器的命令行格式。如下圖所示:

在“終端”窗口可以查看以下遠(yuǎn)程連接的環(huán)境是否正確。
打開遠(yuǎn)程服務(wù)器上的代碼,可以在代碼任意行最左側(cè)打斷點(diǎn),按F5快捷鍵可以debug運(yùn)行。
四,參考文獻(xiàn)
https://blog.csdn.net/hanchaobiao/article/details/84069299
