Windows远程连接Docker服务
问题背景
本地开发了一个SpringBoot
项目,想通过Docker
部署起来,我本地是Window11
系统,由于某些原因不能虚拟化并且未安装Docker-Desktop
,所以我在想有没有办法本地不需要虚拟化也不需要安装Docker-Desktop
来实现支持Docker
命令远程连接到我自己的服务器上。经过搜索以及大佬的指点发现了一个办法。那就是通过Docker客户端远程连接
服务器的Docker
服务端。
实现
Docker服务端允许远程访问
Docker客户端远程访问服务端
查看Docker服务端版本
docker version
获取到Docker服务端版本为24.0.9。
修改docker.service开放远程访问。
# 编辑
vim /etc/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时表示已开放远程访问。
[root@registry ~]# curl http://10.0.11.70:2375/version
{"Platform":{"Name":"Docker Engine - Community"},"Components":[{"Name":"Engine","Version":"24.0.9","Details":{"ApiVersion":"1.43","Arch":"amd64","BuildTime":"2024-02-01T00:49:16.000000000+00:00","Experimental":"false","GitCommit":"fca702d","GoVersion":"go1.20.13","KernelVersion":"3.10.0-1160.el7.x86_64","MinAPIVersion":"1.12","Os":"linux"}},{"Name":"containerd","Version":"v1.7.13","Details":{"GitCommit":"7c3aca7a610df76212171d200ca3811ff6096eb8"}},{"Name":"runc","Version":"1.1.12","Details":{"GitCommit":"v1.1.12-0-g51d5e94"}},{"Name":"docker-init","Version":"0.19.0","Details":{"GitCommit":"de40ad0"}}],"Version":"24.0.9","ApiVersion":"1.43","MinAPIVersion":"1.12","GitCommit":"fca702d","GoVersion":"go1.20.13","Os":"linux","Arch":"amd64","KernelVersion":"3.10.0-1160.el7.x86_64","BuildTime":"2024-02-01T00:49:16.000000000+00:00"}
[root@registry ~]#
安装客户端
在Windows访问 https://download.docker.com/win/static/stable/x86_64/ 下载跟服务端版本一致的客户端压缩包
下载之后解压到指定文件夹,比如我放在D:\environment\docker-24.0.9
下。在D:\environment\docker-24.0.9
下会多出来一个名字为docker
的文件夹,里面有如下图docker.exe、dockerd.exe、docker-proxy.exe
三个文件
配置环境变量
在Windows
的系统环境变量中添加一个环境变量DOCKER_HOST
,值配置为tcp://{IP}:2375
,这个IP
替换为Docker
所在服务器的IP
(例如我的tcp://10.0.11.70:2375
)
然后再添加一个环境变量DOCKER_CLIENT
,值配置为DOCKER_CLIENT
,也就是刚刚解压的目录,并且在Path
中添加该变量(%DOCKER_CLIENT%
),配置该环境变量后可以在任何位置访问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:\environment\docker-24.0.9
下,然后重命名为docker-compose
。
验证
运行命令查看是否生效。
docker-compose ps
注意:运行docker-compose
命令所在的文件夹的名称需要注意,不能随便乱取名。我的情况是需要跟服务器上的当前文件夹名称保持一致