首页 > 其他分享 >Docker Compose - 向远程主机部署服务

Docker Compose - 向远程主机部署服务

时间:2024-02-20 11:45:02浏览次数:24  
标签:Compose 主机 up 远程 compose ssh Docker docker

问题描述

通常,我们本地编写 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://[email protected]" docker-compose up -d

docker-compose --host "ssh://[email protected]" 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 服务信息,而是换成上下文的形式。并且该方法也具有方法二的局限性。

标签:Compose,主机,up,远程,compose,ssh,Docker,docker
From: https://www.cnblogs.com/exmyth/p/18022739

相关文章

  • Docker-Compose简单入门使用
    Dockercompose使用DockerCompose官方文档:https://docs.docker.com/compose/一、DockerCompose安装如果安装使用DockerDesktop默认就安装了DockerCompose,dockerCompose安装参考:https://www.cnblogs.com/morang/p/devops-docker24-composev2-install.htmlhttps://blog......
  • Docker 使用遇到的问题解决 更改Tag
    dockertagconsul:1.15.4consul:latestdockerrmiconsul:1.15.4删除制定版本在运行时,有些镜像拉取时报错我这里 时 consu,只能制定版本下载1.15.4Errorresponsefromdaemon:manifestforconsul:latestnotfound:manifestunknown:manifestunknown ......
  • docker 清理无用的磁盘和镜像
    要增加Docker镜像的磁盘空间,实际上是要增加Docker存储驱动所在的磁盘空间或分区大小。以下是几种常见的方法:清理Docker系统:使用dockersystemprune命令清理无用的容器、镜像、卷和网络。使用dockerimageprune清理所有未被容器引用的镜像。迁移Docker存储目录:停止Docker......
  • 集群内ping外面主机
    1、cd /data01/datafocus/deploy/2、[root@master-192-168-0-30 deploy]# source focus_venv/activate 3、新增:fab add-hostnames master-192-168-0-23=192.168.0.234、去掉:fab add-hostnames master-192-168-0-23=''(focus_venv) [root@master-192-168-0-30 deplo......
  • docker login 私有仓库harbor 502 Bad Gateway的报错
    具体报错:Logindidnotsucceed,error:Errorresponsefromdaemon:loginattempttohttp://harbor.com/v2/failedwithstatus:502BadGateway其实harbor在网页端是可以登录的,但是dockerlogin-uadmin-p1harbor.oldboyedu.com的时候依旧是提示报错的一般这种报错......
  • Docker 安装 SqlServer 和连接
    dockerpullmcr.microsoft.com/mssql/server:2019-latest--拉取dockerrun-e"ACCEPT_EULA=Y"-e"MSSQL_SA_PASSWORD=MyName2024"-p14330:1433--namesql1--hostnamesql1-dmcr.microsoft.com/mssql/server:2019-latest--运行-d是你......
  • Docker安装Tomcat容器
    Docker安装Tomcat容器查看原文安装Tomcat#查找官方镜像dockersearchtomcat#下载最新版Tomcat镜像(其实此命令就等同于:dockerpulltomcat:latest)dockerpulltomcat#下载指定版本的Nginx镜像(xxx指具体版本号)dockerpulltomcat:xxx#检查当前所有Docker下载......
  • Docker安装Redis容器
    Docker安装Redis容器查看原文安装Redis#下载redis镜像dockerpullredis:5#检查当前所有Docker下载的镜像dockerimagesredis配置文件创建以下文件及文件夹,方便配置及管理redismkdir-p/docker/redismkdir-p/docker/redis/datatouch/docker/redis/redis.conf......
  • Docker安装MySQL容器
    Docker安装MySQL容器查看原文安装MySQL#查找官方镜像dockersearchmysql#下载mysql镜像sudodockerpullmysql:5.7#检查当前所有Docker下载的镜像dockerimages启动MySQL容器dockerrun-p3306:3306--namemysql\-v/usr/local/docker/mysql/conf:/etc/mysq......
  • Docker图形化工具
    Docker图形化工具查看原文docker图形页面管理工具常用的有三种:DockerUI、Portainer、ShipyardDockerUI是Portainer的前身,这三个工具通过dockerapi来获取管理的资源信息安装portainer镜像#查看portainer镜像dockersearchportainer#portainer镜像下载dockerpullpor......