问题描述

通常,我们本地编写 docker-compose.yml 文件,然后运行测试。但是,我们需要在 arm64 环境中进行测试,无法在本地直接运行测试。

我们希望可以在本地编写,然后本地使用 docker-compose up 直接在远程 arm 主机上运行测试。

该笔记将介绍:在本地运行 docker-compose 命令,但是在远程主机中启动服务的方法。

方法一、在上传后执行(传统方法)

在传统方法中,我们需要将 docker-compose.yaml 及相关文件,上传到远程主机,然后执行 docker-compose up 启动服务。

这里不再赘述……

方法二、使用 DOCKER_HOST 变量

使用 tcp 协议

第一步、修改 Docker 服务配置,使其监听 TCP/2375 端口(不再赘述)

第二步、通过 DOCKER_HOST 变量指定远程服务,比如 DOCKER_HOST="tcp://0.0.0.0:2375" 指定远程服务:

DOCKER_HOST="tcp://192.168.10.143:2375" docker-compose up -d

docker-compose --host "tcp://192.168.10.143:2375" up -d

使用 ssh 协议(推荐)

我们想使用 TCP 协议(即我们不会改变 docker 配置,使其监听 TCP 端口),而是使用 SSH 协议:

DOCKER_HOST="ssh://root@192.168.10.143" docker-compose up -d

docker-compose --host "ssh://root@192.168.10.143" up -d

使用 SSH 协议需要注意以下问题:
1)从 Docker 18.09 开始支持 SSH 协议;
2)如果使用 SSH KEY 连接主机,需要 ssh-add -k /path/to/key-file 命令添加密钥,因为 docker-compose 不支持命令行指定密钥,也不会解析 .ssh/config 文件。

该方法的局限性

虽然是远程执行,但本质上还是将命令发送到 Docker 守护进程,也就是说本地配置文件不会发送到远程主机。即类似于 volumes: ["./config:/config"] 指令不会生效,因为在 config 下的配置文件不会发送到远程主机。

方法三、使用 Docker Context 命令

在 Docker 19.03.0 中,引入 Docker Context 支持。Docker Engine release notes | Docker Documentation

第一步、创建并查看上下文:

docker context create remote ‐‐docker "host=ssh://user@remotemachine"

docker context ls

第二步、使用上下文操作:

docker-compose ‐‐context remote up -d

该方法的局限性

在本质上「该方法」与「方法二」类似,只是不再在命令行中指定 Docker 服务信息,而是换成上下文的形式。并且该方法也具有方法二的局限性。

Docker Compose - 向远程主机部署服务的更多相关文章

  1. Docker Compose编排工具部署lnmp实践及理论(详细)

    目录 一.理论概述 编排 部署 Compose原理 二.使用docker compose 部署lnmp 三.测试 四.总结 一.理论概述 Docker Compose是一个定义及运行多个Docker容 ...

  2. Docker Compose 项目打包部署

    Docker Compose 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器.然而微服务架构的应用系统一 ...

  3. Docker Compose 部署前后端分离应用

    部署前后端分离应用 容器化 Abp 应用 关于 Abp 应用的容器化,其实和普通的 ASP.NET Core 应用差不多,大家可以参考我此前的文章. 唯一需要注意的是:因为 Abp 解决方案中有多个项 ...

  4. 使用Prometheus监控docker compose方式部署的ES

    需求 收集 ES 的指标, 并进行展示和告警; 现状 ES 通过 docker compose 安装 所在环境的 K8S 集群有 Prometheus 和 AlertManager 及 Grafana ...

  5. Docker学习笔记之编写 Docker Compose 项目

    0x00 概述 通过阅读之前的小节,相信大家对 Docker 在开发中的应用已经有了一定的了解.作为一款实用的软件,我们必须回归到实践中来,这样才能更好地理解 Docker 的实用逻辑和背后的原理.在 ...

  6. Docker学习笔记之使用 Docker Compose 管理容器

    0x00 概述 通过之前的介绍,我们已经基本掌握了构建.运行容器的方法,但这还远远不够,由于 Docker 采用轻量级容器的设计,每个容器一般只运行一个软件,而目前绝大多数应用系统都绝不是一个软件所能 ...

  7. 一文掌握Docker Compose

    目录 Docker Compose介绍 Docker Compose安装 Docker Compose基本示例 1.基本文件及目录设置 2.创建一个Dockerfile 3.通过docker-comp ...

  8. dotnet跨平台 - 使用Nginx+Docker Compose运行.NETCore项目

    参考文档: https://docs.docker.com/install/linux/docker-ce/centos/ http://www.dockerinfo.net/document htt ...

  9. 使用 docker compose 安装 tidb

    目标 : 单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群 前提条件: 1.centos版本在7.3 以上 2.安装git 3.安装docker Docker versi ...

  10. 使用 Docker Compose 快速构建 TiDB 集群

    本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群.Docker Compose 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止. ...

随机推荐

  1. 墨天轮专访TDengine陶建辉:坚持做难而正确的事,三次创业成就不悔人生

    导读: 时序数据库(Time Series Database)在最近几年被越来越多的用户接受并使用,并有广泛的应用场景.云原生时序数据库 TDengine 一直稳居墨天轮时序数据库榜首,其近期的海外发 ...

  2. 基于 Nginx 的大型互联网集群架构与实战方案

    1. Nginx 负载均衡基础配置 首先,搭建一个基础的 Nginx 负载均衡器,用于将流量分发到多个后端服务器上. 步骤 1.1:安装 Nginx 在每台要作为负载均衡器的服务器上,安装 Nginx ...

  3. js中判断数据类型的方法有哪些

    判断数据类型可以使用 typeof 但是typeof 判断数组和函数时返回的都是Object 不能具体判断,这时使用 instanceof 可以判断对象是否是另一个函数创造的 : 用法: typeof ...

  4. 如何对 Vue 首屏加载实现优化 ?

    首屏加载优化是对于 SPA 来说的 ,首次加载所有的 html css js 所需的文件 ,后面就不会因为用户对页面的操作而跳转页面 ,没有跳转页面如何展示不同的内容呢 ? 使用 Vue 的路由机制 ...

  5. webpack与grunt、gulp的不同

    首先,它们的共同点三者都是前端构建工具,grunt和gulp早期比较流行,现在 webpack 是主流: 区别:grunt 和 gulp 基于 任务和流 : webpack 基于入口文件,webpac ...

  6. kotlin集合——>集合操作概述、集合转换

    1. 集合操作概述: Kotlin 标准库提供了用于对集合执行操作的多种函数.这包括简单的操作,例如获取或添加元素,以及 更复杂的操作,包括搜索.排序.过滤.转换等 1.1 扩展与成员函数 集合操作在 ...

  7. 快速搭建hadoop,zk,hbase的基础集群

    1. ZK集群,Hadoop集群,Hbase集群安装 Linux121 Linux122 Linux123 Hadoop MySQL ZK HBASE 1.1 安装Vmware,安装虚拟机集群 1.1 ...

  8. 在浏览器输入 URL 回车之后发生了什么(流程图,超详细版)

    前言 这个问题已经是老生常谈了,更是经常被作为面试的压轴题出现,网上也有很多文章,但最近闲的无聊,然后就自己做了一篇笔记,感觉比之前理解更透彻了. 这篇笔记是我这两天看了数十篇文章总结出来的,所以相对 ...

  9. HTML 中 script 标签的属性和加载顺序

    script 标签默认是阻塞加载的,也就是先下载src内容,然后执行src内容,然后再往后读文档 head 中的 script 按顺序加载执行,然后再加载 body 的元素. 把 script 移动到 ...

  10. 分布式应用架构的发展演变RPC

    什么是分布式系统? <分布式系统原理与范型>定义: "分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统",分布式系统(distributed s ...