Docker 套接字轉發

使用 Secure Pipes SSH 隧道從 Mac 存取遠端 Docker 套接字,或從遠端主機存取本機套接字。

執行前須知

Docker 套接字存取權授予 Docker 主機的強大控制權,通常相當於管理員存取權。僅使用環回位址,切勿將偵聽器暴露於不受信任的網絡,並在使用後停止隧道。偵聽器電腦上的其他使用者和進程也可能存取未經身份驗證的本機連接埠。 SSH使用者必須有存取相關socket的權限; SSH伺服器必須允許對應的轉送。不要削弱套接字權限來使其工作。

使用範例

先決條件:在執行測試的位置安裝 Docker CLI,並確保目標 Docker 守護程式正在執行。在 Mac 上,檢查目前的 Docker 上下文; Unix 套接字路徑必須是絕對路徑。遠端上下文不是本地套接字。

docker context inspect --format '{{.Endpoints.docker.Host}}'

本機轉送:在 Secure Pipes 中選擇 Local Forward,將本地端點設定為 127.0.0.1:8888,然後選擇 Remote Unix Socket with /var/run/docker.sock。連線到遠端 Ubuntu 主機,然後在 Mac 上執行此命令。

docker -H tcp://127.0.0.1:8888 ps

若要尋找用於遠端轉送的 Mac 套接字,請檢查 Mac 上的 Docker 上下文。例如,OrbStack 可能會報告 unix:///Users/yourname/.orbstack/run/docker.sock;使用您實際的絕對路徑。

docker context inspect --format '{{.Endpoints.docker.Host}}'

遠端轉送:在Secure Pipes中選擇“遠端轉送”,將遠端端點設定為 127.0.0.1:8888,然後選擇“本機 Unix 套接字”和 Mac 套接字路徑。連線後,在遠端主機上執行此命令。

docker -H tcp://127.0.0.1:8888 ps

或者,僅為一個指令設定 DOCKER_HOST。這不會更改目前 shell 或已儲存的 Docker 上下文。

DOCKER_HOST=tcp://127.0.0.1:8888 docker ps

權威參考

核對日期:2026 年 10 月 27 日