Docker swarm 通过 docker-compose 部署应用

文章目录

  • Docker swarm 通过 docker-compose 部署应用
    • 1 初始化swarm
    • 2. 创建 Docker Compose 文件
    • 3. 部署服务

1 初始化swarm

默认情况下,Docker作为一个隔离的单节点工作。所有容器仅部署在引擎上。群模式将它变成了一个多主机集群感知引擎。

为了使用秘密功能,Docker必须处于“群模式”。这是通过

$ docker swarm init
Swarm initialized: current node (ean4r3wx8dutbj2hlkp4lsfu0) is now a manager.To add a worker to this swarm, run the following command:docker swarm join --token SWMTKN-1-2t5z3yzsmq4xlhilsuh04ltiprnqt1h1cv8gmmaq6eip3day99-advgpojck21b1hlh3v6vgpncq 172.17.0.86:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

在第二台主机上执行下面的命令,将它作为一个worker添加到集群中。

$ token=$(ssh -o StrictHostKeyChecking=no 172.17.0.86 "docker swarm join-token -q worker") && docker swarm join 172.17.0.86:2377 --token $token
Warning: Permanently added '172.17.0.86' (ECDSA) to the list of known hosts.
This node joined a swarm as a worker.

2. 创建 Docker Compose 文件

使用Docker Compose v3,可以定义一个Docker部署以及生产细节。这为管理可以部署到集群模式集群中的应用程序部署提供了一个中央位置。

一个Docker Compose文件已经创建,它定义了使用web前端部署Redis服务器。使用以下命令查看文件.

$ cat docker-compose.yml
version: "3"
services:redis:image: redis:alpinevolumes:- db-data:/datanetworks:appnet1:aliases:- dbdeploy:placement:constraints: [node.role == manager]web:image: katacoda/redis-node-docker-examplenetworks:- appnet1depends_on:- redisdeploy:mode: replicatedreplicas: 2labels: [APP=WEB]resources:limits:cpus: '0.25'memory: 512Mreservations:cpus: '0.25'memory: 256Mrestart_policy:condition: on-failuredelay: 5smax_attempts: 3window: 120supdate_config:parallelism: 1delay: 10sfailure_action: continuemonitor: 60smax_failure_ratio: 0.3placement:constraints: [node.role == worker]networks:appnet1:

该文件已扩展到利用群集部署选项。

第一个配置选项使用depends_on。这意味着Redis必须在网络之前部署,并允许我们控制服务启动的顺序。

下一个配置选项定义应该如何使用新的部署选项部署应用程序。

首先,mode: replicatedreplicas: 2决定服务应该启动多少个replicas。
其次,定义资源。限制是应用程序不能超过的硬限制,预留是Docker Swarm指示应用程序需要的资源的指南。

第三,restart_policy指出进程崩溃时应该如何操作。

第四,update_config定义如何应用和推出更新。

最后,位置允许我们添加约束,以确定服务应该部署在哪里。
更多docker-compose file文件配置细节请参考

3. 部署服务

Docker Compose文件被称为Docker Compose Stack。堆叠可以通过CLI部署到Swarm。
docker stack命令用于通过Swarm部署docker Compose stack。在本例中,它将以myapp作为服务的前缀。

$ docker stack deploy --compose-file docker-compose.yml myapp
Creating network myapp_appnet1

一旦部署完毕,就可以使用CLI检查状态。

$ docker stack ls
NAME                SERVICES            ORCHESTRATOR
myapp               2                   Swarm

可以通过以下方式发现内部服务的详细信息

$ docker stack services myapp
ID                  NAME                MODE                REPLICAS            IMAGE                                       PORTS
l8c8oztncboc        myapp_web           replicated          2/2                 katacoda/redis-node-docker-example:latest

注意,该命令指示服务的Desired / Running状态。如果不能部署服务,那么这将是不同的。
每个服务容器的详细信息可以使用

$ docker stack ps myapp
ID                  NAME                IMAGE                                       NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
x90dytk7svj7        myapp_web.1         katacoda/redis-node-docker-example:latest   host02              Running             Running 3 minutes ago
92a3t08318ne        myapp_redis.1       redis:alpine                                host01              Running             Running 3 minutes ago
ikmrz4pufzyd        myapp_web.2         katacoda/redis-node-docker-example:latest   host02              Running             Running 3 minutes ago

所有这些信息仍然可以被发现使用

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
21bbc04a9e8d        redis:alpine        "docker-entrypoint.s…"   3 minutes ago       Up 3 minutes        6379/tcp            myapp_redis.1.92a3t08318neq5g5sd1akrwzo

Docker swarm 通过 docker-compose 部署应用相关推荐

  1. Docker Swarm使用介绍和部署

    目录 一.什么是Docker Swarm? 二.Swarm的几个相关概念 1.Swarn 2.Node 3.Service 4.Task 三.Docker Swarm集群的部署 1.准备工作 2.创建 ...

  2. Docker Swarm集群中部署Traefik负载均衡器

    一.创建单节点的Docker Swarm集群 docker swarm init 二.在Swarm集群中创建一个网络 docker network create --driver=overlay tr ...

  3. docker swarm和docker service

    简介 Docker Swarm 是一套管理 Docker 集群的工具,它将一群 Docker 宿主机变成一个单一的.虚拟的主机.Swarm 使用标准的 Docker API 作为其前端访问入口,换言之 ...

  4. 通过Docker Swarm,Docker Compose和Consul扩展到无限(第3/4部分)–蓝绿色部署,自动化和自愈过程...

    本系列分为以下文章. 品尝即将发生的事情 手动部署服务 蓝绿色部署,自动化和自我修复程序 扩展个人服务 在上一篇文章中,我们手动部署了服务的第一个版本以及一个单独的Mongo DB容器实例. 两者都( ...

  5. 使用Docker Swarm,Docker Compose和Consul扩展到无限(第3/4部分)–蓝绿色部署,自动化和自我修复过程...

    本系列分为以下文章. 品尝即将发生的事情 手动部署服务 蓝绿色部署,自动化和自我修复程序 扩展个人服务 在上一篇文章中,我们手动部署了服务的第一个版本以及一个单独的Mongo DB容器实例. 两者都( ...

  6. docker swarm + nginx服务离线部署

    简述 本文为离线部署,仅供参考 swarm概述(摘抄) Raft:一致性算法,在保证大多数管理节点存活的情况下,集群才能使用,所以就要求如果集群的话,manager节点必须>3台,如果是两个台, ...

  7. docker三剑客之 Docker Machine Docker Compose Docker Swarm

    Docker 三剑客 一.docker machine 1.Docker Machine 简介 2.Docker Machine实践 二.docker-compose 1.docker-compose ...

  8. docker swarm 集群服务编排部署指南(docker stack)

    Docker Swarm 集群管理 概述 Docker Swarm 是 Docker 的集群管理工具.它将 Docker 主机池转变为单个虚拟 Docker 主机,使得容器可以组成跨主机的子网网络.D ...

  9. thingsboard集群docker swarm部署报getsockopt failed strangely: Operation not permitted

    thingsboard的集群部署通过docker-compose方式部署时没有出现任何问题,但是使用portainer(docker swarm)方式进行部署时haproxy服务报"gets ...

  10. Docker swarm集群详解(一)

    一.简介 Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源.Swarm和Ku ...

最新文章

  1. C++对象模型9——临时对象的生命周期、模板及实例化分析、内联函数
  2. 第四次Scrum编码冲刺!!!!
  3. 第二周数据采样过程及结果
  4. Ardino基础教程 25_8X8LED点阵
  5. Mac Pro 修改环境变量
  6. 继承单例模式 php_解决 PhpStorm 对 用单例模式实例化PHP类时,代码自
  7. 智慧电商erp通用版管理系统+采购管理+仓库管理+订单管理+财务管理+系统管理+Axure高保真交互ERP通用版电商web端管理系统+全局说明+竞品分析+协同办公
  8. codeforces - 1216F WIFI(单调队列+DP)
  9. E - 娜娜梦游仙境系列——莫名其妙的插曲
  10. 现实世界的Windows Azure: 采访LexisNexis的Marc Slovak 和 Manish Bhargava
  11. NHibernate初学者指南(3):创建Model
  12. IGBT工作原理及作用
  13. .bat文件创建和编辑方法
  14. 20220601超简单百度地图街景图片爬取+绿视率计算
  15. 在php中使用高德api,javascript - 高德地图定位如何调用api?
  16. 计算机英语格式怎么写,26个英文字母,正确的书写格式,孩子真的会吗?
  17. Word2013插入分隔符(分节符)实现任意页插入页码
  18. 我的JavaScript核心笔记
  19. 笔记本计算机工作站,笔记本篇:惠普ZBook G3工作站_Intel笔记本电脑_笔记本评测-中关村在线...
  20. 华为鸿蒙认证测试题,你能答对几道?

热门文章

  1. 全球变暖迫在眉睫碳中和势在必行 碳森羿建议提前布局
  2. #ifdef _cplusplus是什么意思
  3. PANSS 阳性与阴性症状量表
  4. signature=689995ceebd2e64b214c3148d7b8e47a,WDR34基因突变致窒息性胸廓发育不良1例报道并文献复习...
  5. java循环练习题及答案_循环练习题及答案
  6. 【赛事推荐】ICDAR2023国际学术竞赛,六大OCR未解难题等你来挑战!
  7. PHP搭建织梦网站,织梦官方php服务器环境DedeAMPZ安装教程
  8. synchronized的偏向锁、轻量级锁和重量级锁
  9. 国内企业云盘哪个好用?
  10. 微信小程序支付java服务端集成采坑总结