使用 PhpStorm 透過 Docker Remote 遠端操作
最近在測試 PhpStorm 時,因為不想直接在 Windows 10 本機安裝 Docker,所以就研究了一下能不能讓 PhpStorm 去連遠端主機上的 Docker daemon。後來發現 IDE 本身的確支援這種做法,只是設定時有一個重點不能忽略:遠端 Docker API 如果直接裸露在網路上,安全風險很高。
所以這篇除了記錄怎麼接,也順手把安全上的基本概念補一下。
先理解這件事到底在做什麼
PhpStorm 連遠端 Docker,本質上就是讓 IDE 去呼叫遠端主機上的 Docker API。也就是說,從 PhpStorm 觸發的 container list、 image build、 docker compose 等操作,最後都會變成對遠端 Docker daemon 的控制。
這很方便,因為:
- 本機不用安裝完整 Docker 環境。
- 可以直接用遠端 Linux 主機當執行環境。
- IDE 裡的 Docker 功能還是能照常用。
但也因為它是控制 Docker daemon,所以一旦暴露方式不安全,風險很高。能控 Docker,很多時候就等於能進一步碰到主機資源。
最直接的做法:打開 TCP Docker API
當時我測試時看到的做法大概像這樣:
|
|
如果只是 lab 環境,這樣做確實很快,PhpStorm 就可以指定連到 tcp://你的主機:5555。
但這種方式有兩個前提:
- 你知道自己在暴露什麼。
- 這不是直接對外開放給整個網路的正式環境。
比較建議的做法:至少用 SSH 或 TLS
如果是現在要重新做一次,我會優先選:
- 用 SSH 方式連遠端 Docker。
- 或者用 TLS 保護 Docker TCP API。
原因很簡單,裸露的 Docker TCP port 真的太危險。以前很多教學只是為了示範方便,但實務上不太建議直接把 0.0.0.0:5555 或 2375 開給外部網路。
如果真的只是內網 Lab 測試
如果你只是家裡實驗、內網短暫測試,最簡單可以先在遠端主機啟用 Docker daemon TCP listener,再讓 PhpStorm 連過去。
例如可以在啟動時加入:
|
|
或在 daemon.json 裡設定:
|
|
之後重啟 Docker 服務,PhpStorm 裡選 TCP Socket 連線即可。
但就算是 lab,我還是建議至少做這幾件事:
- 防火牆限制來源 IP
- 不要直接暴露到公網
- 測完就關掉
PhpStorm 端大概怎麼設
在 PhpStorm 裡,通常就是:
- 打開 Settings。
- 找到 Docker 或 Build, Execution, Deployment 相關設定。
- 新增一個 Docker 連線。
- 選擇 TCP socket、 SSH 或其他支援方式。
- 填遠端主機位址與 port。
連上後,如果能正常列出 images、 containers,基本上就代表設定成功。
我自己當時的心得
第一次設定時,我原本還覺得直接打指令比較快,因為偶爾用一下 Docker,SSH 到主機上敲 docker ps 其實很直覺。不過如果你已經習慣在 IDE 裡一起看 container、 logs、 compose 與 interpreter,遠端整合起來確實方便不少。
尤其對 PHP 專案來說,如果開發環境本來就在遠端 Linux 主機,讓 PhpStorm 直接接 Docker,會比在本機硬湊一套環境省事很多。
什麼時候適合這樣做
我覺得比較適合的情境是:
- 本機資源不想再跑一套 Docker。
- 團隊共享一台測試主機。
- 專案執行環境本來就固定在遠端 Linux。
- 想直接從 IDE 觀察 container 狀態。
如果只是偶爾下幾條 Docker 指令,其實直接 SSH 上去操作也很夠用。
心智圖
小結
PhpStorm 確實可以很方便地控制遠端 Docker,但方便的另一面就是權限很重,所以安全性不能省略。我的建議是:測試環境可以先快速驗證連線可不可行,但真正要長期使用時,還是優先走 SSH 或 TLS。
參考資料: