背景

本地开发了一个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,否则查询不到容器。

远程连接Docker服务的更多相关文章

  1. ssh远程连接docker中的 linux container

    ssh远程连接docker中的container   由于工作需要,要远程连接Container,本地机器是windows,以下为解决步骤: 1. 环境 本地:Windows ↓ Docker版本1. ...

  2. TLS加密远程连接Docker

    <Docker远程连接设置>一文讲述了开启Docker远程连接的方法,但那种方法不安全,因为任何客户端都可以通过Docker服务的IP地址连接上去,今天我们就来学习Docker官方推荐的安 ...

  3. ssh远程连接docker中linux(ubuntu/centos)

    ssh远程连接docker中linux(ubuntu/centos) https://www.jianshu.com/p/9e4d50ddc57e centos docker pull centos: ...

  4. Navicat 远程连接Docker容器中的mysql 报错:1251 - Client does not support authentication protocol 解决办法。

    出现这个问题 首先进入 1.docker exec -it mysql02 bash      //mysql02是mysql容器的别名 2.mysql -uroot -p 3.输入密码 4.进入my ...

  5. 远程连接linux服务上的mysql

    如果有童鞋linux上还未安装mysql数据库可以参考我上一篇博客 (1)首先确保 linux服务上的 mysql 的3306端口是对外开放的 编辑 vi /etc/sysconfig/iptable ...

  6. VSCode远程连接Docker

    一.Docker开启远程访问 [root@local host ~]# vi /lib/systemd/system/docker.service #修改ExecStart这行 ExecStart=/ ...

  7. 客户端远程连接docker容器中的mysql 报1251错误

    1.启动容器: [root@localhost ~]# docker run -d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql2.进入容器: [r ...

  8. Windows2008/2012多用户同时远程连接终端服务授权

    Windows服务器多用户同时登录问题,仅提供要点,其它自行百度: 1,Windows Server 远程桌面默认只能2个连接 2,安装终端服务(远程桌面会话主机).终端授权(远程桌面授权) 3,终端 ...

  9. Windows2008/2012/2016多用户同时远程连接终端服务授权

    win2016多用户登录: 添加角色“远程桌面服务”,子角色“远程桌面会话主机”和“远程桌面授权”,重启 远程桌面授权,激活服务器,企业协议,协议号6565792,授权模式“每用户” 本地策略管理器g ...

  10. 远程连接ORACLE服务

    远程服务端操作系统: Windows Server 2003 Enterprise Edition sp2ORACLE 版本: Oracle 9.2.0.1.0 正式版 本地客户端操作系统: Wind ...

随机推荐

  1. JAVA——拆分位数

    2024/07/09 题目: 解题: import java.util.Scanner; public class Main { public static void main(String[] ar ...

  2. Prism:框架介绍与安装

    Prism:框架介绍与安装 什么是Prism? Prism是一个用于在 WPF.Xamarin Form.Uno 平台和 WinUI 中构建松散耦合.可维护和可测试的 XAML 应用程序框架 Gith ...

  3. win10远程登录的账号密码

    win10有了一个windows hello,还有本地账号,还有microsoft账号 在 设置-账户信息 这里可以设置登录一个 Microsoft账号,然后远程登录的时候,用的是 Microsoft ...

  4. 【YashanDB知识库】YAS-00220, utf8 sequence is wrong

    [问题分类]功能使用 [关键字]YAS-00220,utf8 sequence is wrong [问题描述]在数据库执行select语句时,或者在exp导出数据库用户时报这个错误,表字段中同时存在n ...

  5. EF Core – Table / Entity Splitting

    参考 Docs – Advanced table mapping Table Splitting Table Splitting 指的是把一个表映射到多个 Entity,或者反过来说就是把多个 Ent ...

  6. CSharp的@microsoft/signalr实时通信教程 - 前端 vue

    1. 安装@microsoft/signalr pnpm install @microsoft/signalr --save signalr 是微软对 websocket技术的封装,优化了操作 :1. ...

  7. Vue中mixins(混入)的介绍和使用

    为什么引进 mixins 随着项目的开发,组件越来越多 ,这就导致了在各个组件中需要编写功能相同的代码段,重复地定义这些相同的属性和方法,导致代码地冗余,还不利于后期代码的维护 混入mixins 的创 ...

  8. 揭秘 FineVideo 数据集构建的背后的秘密

    开放视频数据集稀缺,因此减缓了开源视频 AI 的发展.为此,我们构建了 FineVideo,这是一个包含 43,000 个视频的数据集,总时长为 3,400 小时,并带有丰富的描述.叙事细节.场景分割 ...

  9. day05-JDK的卸载与安装

    JDK卸载 右键我的电脑--属性--高级系统设置--环境变量,找到JAVA_HOME安装目录,删除Java安装目录 删除JAVA_HOME 删除path下关于java的目录 cmd查看Java -ve ...

  10. 快来考试拿证书!KubeSphere 个人技能专业考试认证上线啦!

    以容器技术和容器编排为基础的云原生应用,被越来越多的企业用户接受和使用,并且在生产环境中使用容器技术的比例逐年增加.Kubernetes 无疑已经成为容器编排的事实基础,而依托于 Kubernetes ...