Windows远程连接Docker服务

背景

本地开发了一个SpringBoot项目,想通过Docker部署起来,我本地是Window10系统,由于某些原因不能虚拟化并且未安装Docker-Desktop,所以我在想有没有办法本地不需要虚拟化也不需要安装Docker-Desktop来实现支持Docker命令远程连接到我自己的服务器上。经过搜索以及大佬的指点发现了一个办法。那就是通过Docker客户端远程连接服务器的Docker服务端。

实现

Docker客户端远程访问服务端

查看Docker服务端版本

shell 复制代码
docker version

获取到Docker服务端版本为24.0.7。

Docker服务端允许远程访问

修改docker.service开放远程访问。

shell 复制代码
# 编辑
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服务

shell 复制代码
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版本

shell 复制代码
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(文件名称是自己改的,下载下来就是上图的名称)。

验证

运行命令查看是否生效。

shell 复制代码
docker-compose ps
ad-tip 复制代码
注意:运行docker-compose命令所在的文件夹的名称需要注意,不能随便乱取名。我的情况是需要跟服务器上的当前文件夹名称保持一致。我的服务器上docker-compose.yml放在/usr/looveh/tw-feedback下,所以在Windows下执行docker-compose命令时当前目录的名称需要为tw-feedback,否则查询不到容器。
相关推荐
polarislove02141 分钟前
5.7W25Q64 实验(上)-嵌入式铁头山羊STM32笔记
笔记·stm32·嵌入式硬件
im_AMBER15 分钟前
Leetcode 84 水果成篮 | 删除子数组的最大得分
数据结构·c++·笔记·学习·算法·leetcode·哈希算法
hssfscv23 分钟前
Javaweb学习笔记——Maven
笔记·学习·maven
weixin_4624462327 分钟前
使用 Ubuntu 构建 code-server Docker 镜像的完整指南
linux·ubuntu·docker
d111111111d27 分钟前
STM32-HAL库学习,初识HAL库
笔记·stm32·单片机·嵌入式硬件·学习
Roxanne00731 分钟前
吴教授《AI for everyone》笔记梳理(DAY1)
人工智能·笔记
2501_9399090532 分钟前
Docker(2)资源限制及数据卷容器以及容器互联
运维·docker·容器
HaSaKing_72133 分钟前
【实战记录】Docker Compose 单机部署 EMQX 3 节点集群(5.8.8 社区版)完整踩坑与解决方案
docker·容器·eureka
weixin_4624462335 分钟前
【原创实践】使用 Docker 在 MySQL 容器中批量导出所有数据库
数据库·mysql·docker
l1t35 分钟前
docker 启动 oracle容器报1521: bind: address already in use错误的解决
docker·oracle·容器