九、安装Docker Compose 编排工具

这篇具有很好参考价值的文章主要介绍了九、安装Docker Compose 编排工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

根据前面所学的知识可知,想要使用Docker部署应用,就要先在应用中编写Dockerfile 文件来构建镜像。同样,在微服务项目中,我们也需要为每一个服务编写Dockerfile文件 来构建镜像。构建完成后,就可以根据每一个镜像使用docker run或者docker service create命令创建并启动容器,这样我们就可以访问容器中的服务了。

微服务架构中:涉及的服务数量巨多。

虽然使用上述方式可以部署微服务项目,但考虑到微服务项目可能有多个子服务组成, 并且每个服务启动过程中都需要配置额外的参数(如-e配置环境变量、--network指定网 络、磁盘挂载等等)。这种情况下,每次更新微服务后,都要手动运行指令来重新启动 容器,这就显得相当麻烦了。针对这种多服务部署的情况,Docker提供了Docker Compose编排工具来对多服务应用进行统一部署。Compose是Docker的服务编排工 具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个 Docker容器,非常适合组合使用多个容器进行开发的场景。

通过该编排工具,可以使用yml(或yaml)文件来配置应用程序服务,然后只需要一条简 单的服务部署指令就可以从配置中创建并启动所有服务。

1. Yaml 语法

YAML 是 "YAML An't Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。

非常适合用来做以数据为中心的配置文件

基本语法

  • key: value;kv之间有空格

  • 大小写敏感

  • 使用缩进表示层级关系

  • 缩进不允许使用tab,只允许空格

  • 缩进的空格数不重要,只要相同层级的元素左对齐即可

  • '#'表示注释

  • 字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义

 文章来源地址https://www.toymoban.com/news/detail-747628.html

 

数据类型

  • 字面量:单个的、不可再分的值。date、boolean、string、number、null

    k: v

     

  • 对象:键值对的集合。map(Dictionary<T>)、hash(HashTable)、set(HashSet<T>)、object

    行内写法:  k: {k1:v1,k2:v2,k3:v3}
    #或
    k: 
      k1: v1
      k2: v2
      k3: v3

     

  • 数组:一组按次序排列的值。array、list、queue

    行内写法:  k: [v1,v2,v3]
    #或者
    k:
     - v1
     - v2
     - v3

     

Java 示例

@Data
public class Person {
    private String userName;
    private Boolean boss;
    private Date birth;
    private Integer age;
    private Pet pet;
    private String[] interests;
    private List<String> animal;
    private Map<String, Object> score;
    private Set<Double> salarys;
    private Map<String, List<Pet>> allPets;
}

@Data
public class Pet {
    private String name;
    private Double weight;
}
 

 

.Net 示例

public class Person {
    public String UserName { get; set; }
    public bool Boss { get; set; }
    public DateTime Birth { get; set; }
    public int Age { get; set; }
    public Pet PersonPet { get; set; }
    public String[] Interests { get; set; }
    public List<String> Animal { get; set; }
    public Dictionary<String, Object> Score { get; set; }
    public HashSet<Double> Salarys { get; set; }
    public Dictionary<String, List<Pet>> AllPets { get; set; }
}

public class Pet {
    public String Name { get; set; }
    public Double Weight { get; set; }
}
 

 

yaml表示以上对象

person:
  userName: zhangsan
  boss: false
  birth: 2019/12/12 20:12:33
  age: 18
  pet: 
    name: tomcat
    weight: 23.4
  interests: [篮球,游泳]
  animal: 
    - jerry
    - mario
  score:
    english: 
      first: 30
      second: 40
      third: 50
    math: [131,140,148]
    chinese: {first: 128,second: 136}
  salarys: [3999,4999.98,5999.99]
  allPets:
    sick:
      - {name: tom}
      - {name: jerry,weight: 47}
    health: [{name: mario,weight: 47}]
 

 

2. 安装与卸载

前提条件:docker 版本不能低于docker 18

  1. 从github上下载docker-compose二进制文件安装

    curl -L https://github.com/docker/compose/releases/download/1.27.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

     

    若是github访问太慢,可以用daocloud下载

    curl -L https://get.daocloud.io/docker/compose/releases/download/1.27.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

     

    添加可执行权限
  2. sudo chmod +x /usr/local/bin/docker-compose

     

  3. 测试安装结果

    $ docker-compose --version

     

     

卸载

rm /usr/local/bin/docker-compose

 

 

3. docker compose使用

步骤:分为三步(在创建的一个空目录下执行)

1、编写Dockerfile文件(为每个服务构建需要的镜像,方便迁移‐不是必须的)

2、编写docker‐compose.yml文件(编写部署服务相关指令)

3、运行docker‐compose up(启动yml文件中服务)

案例:

1、准备:redis:7.0.5 镜像

$ docker pull redis:5.7 

 

2、需要新建一个空白目录,例如rwtest。新建一个docker‐compose.yml,编辑该文件:

version: '3'
services:
  redis:
    image: redis:7.0.5
    ports:
      - 6379:6379
    container_name: redis
    networks:
      - mynetwork
networks:
  mynetwork:

 

该文件中内容:新建db和wordpress容器。等同于:

$ docker run -d --name redis --net mynetwork -p 6379:6379 redis:7.0.5

 

3、启动docker compose

$ docker‐compose up -d

 

5、停止/重启服务:docker‐compose stop/restart

多服务案例

version: '3'
services:
  net_demo:
    image: net_img
    ports:
      - 8888:8888
    container_name: net.renwoxing.cn
    restart: on-failure
    networks:
      - mynetwork
    depends_on:
      - mysql.renwoxing.cn
      - redis.renwoxing.cn
  mysql.renwoxing.cn:
    image: mysql:5.7
    ports:
      - 3306:3306
    container_name: mysql.renwoxing.cn
    restart: on-failure
    networks:
      - mynetwork
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - mysql_conf:/etc/mysql/conf.d
      - mysql_data:/var/lib/mysql
      - mysql_logs:/logs
  redis.renwoxing.cn:
    image: redis:7.0.5
    ports:
      - 6379:6379
    container_name: redis.renwoxing.cn
    networks:
      - mynetwork
    restart: on-failure
networks:
  mynetwork:
volumes:
  mysql_conf:
  mysql_data:
  mysql_logs:

 

  • version:version通常在一个docker-compose.yml文件的最顶部,用来表示文件内 容的约束版本(类似于XML文件约束)(版本越高,支持的指令越多)

  • services用来声明服务,在services下的所有同缩进的应用名称都代表一个服务,如 上面示例中的web和db。在进行多服务部署的时候,有多少个服务需要同时部署, 就需要在services参数下面声明并配置多少个服务

    • image:容器启动需要依赖的镜像(如果本地没有会自动pull)

    • restart:服务重启策略

      • restart: "no" #服务默认值为no,即服务失败后没有任何动作

      • restart: always #表示服务会一直重新启动

      • restart: on-failure #表示服务提示失败错误后会重新启动

      • restart: unless-stopped #表示只有服务在停止后才会重启

    • container_name:指定容器名称

    • ports:指定服务向外暴露的端口

    • networks:指定容器使用的网络

    • depends_on:服务依赖决定了服务的依赖关系,如示例中的web依赖db,所以 db服务会先于web服务启动,但并不表示db服务完全启动成功后才启动web服 务,它只决定启动的先后顺序而已

    • deploy:deploy参数是Docker Compose针对Swarm集群部署提供的,子参数 专门用于指定与服务部署和运行相关的配置

      • replicas:表示服务实例的副本数量

      • restart_policy:estart_policy参数同前面介绍的restart类似,都是用来配置 服务重启策略的,只是该属性配置在deploy参数下,并只在集群环境下生 效。该参数包含多个子属性及属性值

        • condition: on-failure #表示服务重启的条件,值有none、on-failure和 any

        • delay: 5s #表示重启服务之间等待时间,默认为0

        • max_attempts: 3 #表示失败后尝试重启的次数

        • window: 120s #表示等待多久来确定服务是否启动成功

      • placement:placement用来配置指定位置的约束,当服务在Swarm集群环 境下部署时会随机分配到管理节点和其他工作节点上。在上述示例中由于将 mysql数据挂载到了本机example-mysql数据卷中,所以使用了placement 的子参数constraints: [node.role == manager]指定该服务只在manager管理节点上运行 :

    • environment: 用于配置服务启动时需要的环境变量。如上述示例中 MYSQL_ROOT_PASSWORD表示数据库root用户的密码,MYSQL_DATABASE表 示数据库启动后自动创建的数据库。

  • networks:用于配置服务网络

  • volumes:目录挂载,上述示例中是将mysql数据挂载到本地example-mysql数据卷 中,如果该数据卷不存在,服务启动时也会默认创建

其他配置可参考:https://docs.docker.com/compose/compose-file/

 
配套视频链接:全网首发java/.net双案例Docker精品课程,Docker 进阶教程(双语言双案例助力教学)-已完结_哔哩哔哩_bilibili

 

到了这里,关于九、安装Docker Compose 编排工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • docker compose快速编排

    Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容集群的快速编排 Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。 Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若

    2024年02月13日
    浏览(9)
  • Docker六 | Docker Compose容器编排

    目录 Docker Compose 基本概念 使用步骤  常用命令  Docker-Compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Compose可以管理多个Docker容器组成一个应用。 需要定义一个YAML格式的配置文件docker-compose.yml,写好多个容器之间的调用关系,然后只需一个命令就能同时

    2024年02月02日
    浏览(13)
  • docker (十)-docker compose容器编排

    在实际工作中,部署一个应用可能需要部署多个容器,一个一个部署非常不方便。docker compose可以一键部署和启动多个容器,它使用yaml文件来编排服务。github和docker hub很多项目都提供了docker-compose.yaml文件,我们可以一键部署项目,非常方便。 这里可以使用 vscode 去学习dock

    2024年02月21日
    浏览(13)
  • Docker 容器编排利器 Docker Compose

    Docker 容器编排利器 Docker Compose

    目录 一、Docker Compose 简介 二、Docker Compose 安装 2.1 Mac、Windows 平台默认支持 2.2 Linux 安装(通过包管理) 2.2.1 安装 2.2.2 测试 2.2.3 卸载 2.3 使用PIP 安装与卸载 2.3.1 PIP安装 2.3.2 PIP 卸载 三、基本使用 3.1 术语 3.2 部署Flask 应用 四、Compose 常用命令 4.1 命令对象与格式 4.2 docker-compose

    2024年03月26日
    浏览(11)
  • Docker高级:Compose 容器编排

    Docker高级:Compose 容器编排

    Compose 是Docker公司推出的一个软件,可以管理多个Docker容器组成一个应用。我们只需要定义一个 YAML 格式的配置文件 docker-compose.yaml 配置好多个容器之间的调用关系 ,最后只需要一个命令,就可以同时控制这些容器进行启动 / 关闭。Compose 允许用户通过一个单独的 docker-compo

    2024年02月06日
    浏览(10)
  • 04-docker compose容器编排

    ​ Compose 是Docker公司推出的一个工具软件,可以管理多个Dokcer容器组成一个应用。你需要定义一个YAML格式的配置文件 docker-compose.yml , 写好多个容器之间的调用关系 。然后,只要一个命令,就能同时启动/关闭这些容器 简单来说,Docker Compose 是Docker官方的开源项目, 负责实

    2024年02月09日
    浏览(23)
  • Docker——compose单机容器集群编排

    Docker——compose单机容器集群编排

    Docker-compose是一个基于Docker的容器编排工具。它使用一个YAML文件来定义和配置多个容器的集群。通过使用Docker-compose,我们可以轻松地定义、配置和协同运行多个Docker容器,而无需手动管理它们的启动和通信。 1.为何需要Docker-compose 在现代应用程序开发中,容器化技术已经成

    2024年02月16日
    浏览(11)
  • Docker Compose容器的快速编排

    Docker Compose容器的快速编排

    Docker Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排(使用一个模板文件定义多个应用容器的启动参数和依赖关系,并使用Docker Compose来根据这个模板文件的配置来启动容器)。 项目/工程 - 包含一个或多个服务 - 包含一个或多个容器 默认使用项目的目

    2024年02月15日
    浏览(10)
  • Docker服务编排之Docker Compose的使用

    Docker服务编排之Docker Compose的使用

    概念:按照一定的业务规则批量的管理容器 微服务架构的应用系统中一般包含很多微服务,一个微服务中又包含很多的实例,每个微服务都要手动管理,维护的工作量很大。 拉去镜像,创建多个容器,分别管理这些容器的启动停止等等 一、Docker Compose概述 Docker Compose是一个

    2024年02月12日
    浏览(8)
  • Docker-Compose编排与部署

    Docker-Compose编排与部署

    目录 Docker Compose Compose的优点 编排和部署 Compose原理 Compose应用案例 安装docker-ce 阿里云镜像加速器 安装docker-compose docker-compose用法 Yaml简介 验证LNMP环境          Docker Compose 的前身是 Fig,它是一个 定义及运行多个 Docker 容器的工具 。可以使用 YAML 文件来配置应用程序的服

    2024年02月14日
    浏览(17)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包