配置 VSCode 遠程容器開發(fā)環(huán)境

快速設置VSCode使用遠程服務器(通常是Linux)上的Docker容器來作為開發(fā)環(huán)境

優(yōu)點

  • 本地桌面干凈: 只有docker客戶端
  • 開發(fā)環(huán)境代碼化:Dockerfile
  • 切換環(huán)境只需切換容器

遠程主機配置

安裝 Docker Engine

參考這里官方文檔

Docker開啟遠程端口

在遠程主機上:

  1. 創(chuàng)建文件 daemon.json 到目錄 /etc/docker:

     {"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]}
    
  2. 創(chuàng)建文件 /etc/systemd/system/docker.service.d/override.conf:

     [Service]
     ExecStart=
     ExecStart=/usr/bin/dockerd
    
  3. 重啟docker:

     systemctl daemon-reload
     systemctl restart docker.service 
    

本地桌面配置

安裝 Open SSH 客戶端

Linux/Mac

直接用包管理器安裝open-ssh

Win7

  1. 下載編譯好的open ssh二進制包:這里
  2. 解壓到 C:\OpenSSH
  3. 把 C:\OpenSSH 加到系統(tǒng)環(huán)境變量Path上(需要注銷再登錄才能生效)
  4. 打開cmd甚侣,運行
    C:> ssh-agent 
    

確保能找到

Win10

巨硬廠從Win10開始終于向社區(qū)靠攏,系統(tǒng)自帶open ssh了唆涝,參考這個 教程

啟用ssh-agent

Linux/Mac

安裝了open-ssh以后默認自動運行,如果沒有:

 eval "$(ssh-agent -s)"

Win7

PowerShell 窗口里面運行 (administrator 模式):

Set-Service ssh-agent -StartupType Automatic

然后 [Windows Task Manger] --> [Services] 找到ssh-agent,啟動它

Win10

添加了openssh以后蛾扇,應該也是自動運行的

生成 ssh 秘鑰對

運行 ssh-keygen

ssh-keygen

一路回車咧织,默認生成兩個文件:

  • id_rsa
  • id_rsa.pub

把這個id_rsa.pub 傳送到遠程主機囤捻,復制成文件: ~/.ssh/authorized_keys
如果遠程主機上這個authorized_keys已經(jīng)存在萧豆,就添加到后面

cat id_rsa.pub >> ~/.ssh/authorized_keys

本地運行如下命令加上私鑰

ssh-add id_rsa

測試一下奸披,無需密碼直接ssh連接到遠程主機:

ssh <user>@<host>

本地配置 Docker 客戶端

安裝Docker

Linux/Mac

直接包管理器安裝,就這么簡單炕横。源内。葡粒。

Windows

下面二選一

  • 方法一:安裝docker desktop, -- 其實不需要這么大而全
  • 方法二:下載 docker.exe 放到Path包含的路徑下就行了份殿, 比如c:\windows

配置本地使用遠程 Docker 服務

創(chuàng)建一個context:

docker context create <context name> --docker "host=ssh://<user>@<host>"

切換到上面這個context:

docker context use <context name>

測試一下:

docker info

這里會輸出和在遠程主機上運行 docker info 一樣的結果, 實際上這里docker本地只是一個客戶端嗽交,連接到遠程主機上的docker服務卿嘲。

Visual Studio Code

安裝 VSCode

這里 VSCode
打開 VSCode, 安裝插件:

  • Extensions -> Search Remote -> Remote Development
  • Extensions -> Search Docker -> Docker

開始一個項目!

這里有兩個方式夫壁,個人覺得第一個更(适霸妗)好(事)

方式一: Attach Remote Host Container

遠程主機上創(chuàng)建項目

新建一個目錄,例如 ~/newproj, 然后加一個Dockerfile,例如:

FROM python                                                                
ENV DEBIAN_FRONTEND=noninteractive 
apt-get update                

然后創(chuàng)建鏡像梅肤,再啟動容器:

docker build . -t <image tag>
docker run -d --name <container name> -v ~/newproj:/workspaces/newproj <image tag> tail -f /dev/null

注意: 這里要掛載項目目錄到容器中方便保存文件司蔬。tail -f 這個命令是為了讓容器保持運行。

本地 VSCode 訪問遠程容器

切換 Docker context

打開VSCode姨蝴,按下 ctrl+shift+p 運行 docker contexts use , 選擇上面創(chuàng)建的docker context.

連接容器

按下 ctrl+shift+p 運行 Remote-Containers:Attach to Running Container..., 選擇上面創(chuàng)建的容器名字俊啼。

連接成功后,按下 ctrl+k, ctr+o, 你會發(fā)現(xiàn)VSCode彈出的不是本地目錄左医,而是容器內(nèi)部的目錄授帕!現(xiàn)在VSCode只是一個客戶端,一切操作都在容器中了浮梢!

嘗試一下跛十。選擇上面創(chuàng)建的 /workspaces/newproj,新建一個main.py秕硝,保存芥映。再去主機上看,~/newproj/main.py就躺在那缝裤。

現(xiàn)在屏轰,可以愉快地在容(工)器(地)里面編(搬)碼(磚)了。

方式二 - 微軟官方推薦的辦(麻)法(煩)憋飞,略霎苗。

總結

VSCode這個Remote Development功能很驚艷,除了使用容器榛做,也可以直接SSH到遠程機器唁盏,大大減少了遠程開發(fā)不便使用圖形化IDE的痛苦。這個Remote功能也讓VSCode直接秒殺了Atom和Sublime等一眾搬磚利器检眯,再醬紫下去厘擂,JetBrains社區(qū)版系列也很危險了。锰瘸。刽严。

人家不要(臉)錢!不要(臉)錢避凝!不要(臉)錢舞萄!JetBrains加油啊。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末管削,一起剝皮案震驚了整個濱河市倒脓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌含思,老刑警劉巖崎弃,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甘晤,死亡現(xiàn)場離奇詭異,居然都是意外死亡饲做,警方通過查閱死者的電腦和手機线婚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盆均,“玉大人酌伊,你說我怎么就攤上這事∽鹤伲” “怎么了居砖?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長驴娃。 經(jīng)常有香客問我奏候,道長,這世上最難降的妖魔是什么唇敞? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任蔗草,我火速辦了婚禮,結果婚禮上疆柔,老公的妹妹穿的比我還像新娘咒精。我一直安慰自己,他們只是感情好旷档,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布模叙。 她就那樣靜靜地躺著,像睡著了一般鞋屈。 火紅的嫁衣襯著肌膚如雪范咨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天厂庇,我揣著相機與錄音渠啊,去河邊找鬼。 笑死权旷,一個胖子當著我的面吹牛替蛉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拄氯,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼躲查,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了坤邪?” 一聲冷哼從身側響起熙含,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤罚缕,失蹤者是張志新(化名)和其女友劉穎艇纺,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡黔衡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年蚓聘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盟劫。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡夜牡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出侣签,到底是詐尸還是另有隱情塘装,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布影所,位于F島的核電站蹦肴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏猴娩。R本人自食惡果不足惜阴幌,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卷中。 院中可真熱鬧矛双,春花似錦、人聲如沸蟆豫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽十减。三九已至徙瓶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嫉称,已是汗流浹背侦镇。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留织阅,地道東北人壳繁。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像荔棉,于是被迫代替她去往敵國和親闹炉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354