快速設置VSCode使用遠程服務器(通常是Linux)上的Docker容器來作為開發(fā)環(huán)境
優(yōu)點
- 本地桌面干凈: 只有docker客戶端
- 開發(fā)環(huán)境代碼化:Dockerfile
- 切換環(huán)境只需切換容器
遠程主機配置
安裝 Docker Engine
參考這里官方文檔
Docker開啟遠程端口
在遠程主機上:
-
創(chuàng)建文件
daemon.json
到目錄/etc/docker
:{"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]}
-
創(chuàng)建文件
/etc/systemd/system/docker.service.d/override.conf
:[Service] ExecStart= ExecStart=/usr/bin/dockerd
-
重啟docker:
systemctl daemon-reload systemctl restart docker.service
本地桌面配置
安裝 Open SSH 客戶端
Linux/Mac
直接用包管理器安裝open-ssh
Win7
- 下載編譯好的open ssh二進制包:這里
- 解壓到 C:\OpenSSH
- 把 C:\OpenSSH 加到系統(tǒng)環(huán)境變量Path上(需要注銷再登錄才能生效)
- 打開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加油啊。