Windows遠端連線Docker服務

我叫乐多你养我啊發表於2024-11-14

背景

本地開發了一個SpringBoot專案,想透過Docker部署起來,我本地是Window10系統,由於某些原因不能虛擬化並且未安裝Docker-Desktop,所以我在想有沒有辦法本地不需要虛擬化也不需要安裝Docker-Desktop來實現支援Docker命令遠端連線到我自己的伺服器上。經過搜尋以及大佬的指點發現了一個辦法。那就是透過Docker客戶端遠端連線伺服器的Docker服務端。

實現

Docker客戶端遠端訪問服務端

檢視Docker服務端版本

docker version

獲取到Docker服務端版本為24.0.7。

Docker服務端允許遠端訪問

修改docker.service開放遠端訪問。

# 編輯
vim /lib/systemd/system/docker.service

找到該檔案中的

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

註釋或刪除改行,替換為如下命令

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

替換之後儲存退出,然後重啟Docker服務

systemctl daemon-reload && systemctl restart docker

在你本地透過瀏覽器訪問http://{伺服器IP}:2375/version,當看到頁面顯示一串JSON時表示已開放遠端訪問。

下載對應版本客戶端

在Windows訪問https://download.docker.com/win/static/stable/x86_64/下載跟服務端版本一致的客戶端壓縮包。

下載之後解壓到指定資料夾,比如我放在D:\\tools下。在D:\\tools下會多出來一個名字為docker的資料夾,裡面有如下圖docker.exe、dockerd.exe、docker-proxy.exe三個檔案(docker-compose.exe不用管,後面會講)。

配置環境變數

在Windows的系統環境變數中新增一個環境變數DOCKER_HOST,值配置為tcp://{IP}:2375,這個IP替換為Docker所在伺服器的IP(例如我的tcp://192.168.169.180:2375)

然後再新增一個環境變數DockerClient,值配置為D:\\tools\\docker,也就是剛剛解壓的目錄,並且在Path中新增該變數(%DockerClient%),配置該環境變數後可以在任何位置訪問docker.exe可執行檔案。

驗證

開啟CMD,在任意資料夾下執行docker ps檢視是否顯示伺服器上的容器。

Docker-Compose實現同樣功能

檢視服務端docker-compose版本

docker-compose version

# Docker Compose version v2.29.2

下載相同版本的docker-compose

訪問https://github.com/docker/compose/releases下載對應版本的docker-compose。

下載後存放到docker客戶端所在的目錄D:\\tools\\docker下,就是在上面看到的docker-compose.exe(檔名稱是自己改的,下載下來就是上圖的名稱)。

驗證

執行命令檢視是否生效。

docker-compose ps
注意:執行docker-compose命令所在的資料夾的名稱需要注意,不能隨便亂取名。我的情況是需要跟伺服器上的當前資料夾名稱保持一致。我的伺服器上docker-compose.yml放在/usr/looveh/tw-feedback下,所以在Windows下執行docker-compose命令時當前目錄的名稱需要為tw-feedback,否則查詢不到容器。

相關文章