一、docker-compose介绍

    使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。下面介绍Docker官方产品,Docker Compose。

  Dockerfile可以让用户管理一个单独的应用容器,而compose则允许用户在一个模板(yaml格式)中定义一组相关联的应用容器(被称为一个project,即项目) 

 1、docker-compose基础概念

    docker-compose项目是docker官方的开源项目, 负责实现对docker容器集群的快速编排。

    docker-compose将所管理的容器分为三层, 分别是工程(project),服务(service)以及容器(containner)

    docker-compose运行目录下的所有文件(docker-compose.yml文件、extends文件或环境变量等)组成一个工程,如无特殊指定,工程名即为当前目录名。

  •  一个工程当中,可以包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。
  •  一个服务中可以包括多个容器实例,docker-compose并没有解决负载均衡的问题。因此需要借助其他工具实现服务发现及负载均衡,比如consul。
  •  docker-compose的工程配置文件默认为docker-compose.yml。可以通过环境变量COMPOSE_FILE -f 参数自定义配置文件,其自定义多个有依赖关系的服务及每个人服务运行的容器。

二、YAML文件格式及编写

  示例yaml文件

 1 version: "3"  # 版本号,目前使用3
2 services: # 定义服务
3 rms-rcs: # 服务名称,目前是后端服务
4 image: rms-rcs:v1.0.0 # 镜像名称及tag
5 container_name: rms-rcs # 定义容器名称
6 networks: # 选择网络,为了容器之间通讯
7 - "tester"
8 irsp_client:
9 image: irsp_client:v1.0.0
10 container_name: irsp_client
11 networks:
12 - "tester"
13 irweb:
14 image: irweb:v1.0.0
15 container_name: irweb
16 ports:
17 - "80:80"
18 networks:
19 - "tester"
20 networks: # docker创建网络
21 tester: # 新建网络名称
22 driver: bridge # 网络类型,例如:桥接

三、Docker Compose 配置常用字段

字段  描述
build  指定Dockerfile文件名(要指定的Dockerfile文件需要在build标签的子级标签中用dockefile标签指定)
dockerfile 构建镜像上下文路径
context 可以是dockerfile路径,或者时执行git仓库的url地址
images 指定镜像(已存在)
command  执行命令,会覆盖容器启动后默认执行的命令(会覆盖dockefile中的CMD指令)
container_name  指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量。
deploy  指定部署和运行服务相关配置,只能在swarm模式使用
environment  添加环境变量
networks  加入网络,引用顶级networks下条目
network-mode  设置容器的网络模式
ports  暴露容器端口,与-p相同,但是端口不能低于60
volumes  挂载一个宿主机目录或命令卷到容器,命令卷要在顶级volumes定义卷名称
volumes_from  从另一个服务或容器挂载卷,可选参数:ro和rw(仅版本‘2’支持)
hostname 在容器内设置内核参数
links  连接诶到另一个容器,- 服务名称[ : ]
privileged  用来给容器root权限,注意是不安全的,true

  2、Docker-compose常用命令

    运行这些命令需要结合docker-compose一起使用。

    且必须要在含有docker-compose.yml文件的目录中才可以使用,不然报错。如果文件名称不是默认名称,可以使用-f参数。

命令 描述
build 重新构建服务
ps 列出容器
up 创建和启动容器
exec 在容器里面执行命令
scale 指定一个服务容器启动数量
top 显示正在运行的容器进程
logs 查看服务容器的输出
down 删除容器、网络、数据卷和镜像
stop/start/restart 停止/启动/重启服务

四、docker-compose安装

  docker-compose是docker的独立产品,因此需要安装docker之后再单独安装docker compose。

  github访问太慢,没有工具(那种工具)

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

  使用国内的即可

  然后找到下载位置给添加可执行权限:

    cd /user/local/bin

    chmod 777 docker-compose # 777给最大权限,如果是生产环境,那就酌情给权限4 2 1,自己算着给

下一节,关于docker network实现容器内部通讯。

docker-compose任务编排的更多相关文章

  1. AspNetCore容器化(Docker)部署(三) —— Docker Compose容器编排

    一.前言 上一篇部署了一个最基础的helloworld应用,创建了两个容器和一个network,还算应付得过来. 如果该应用继续引入mysql.redis.job等若干服务,到时候发布一次得工作量之大 ...

  2. asp.net core容器&mysql容器network互联 & docker compose方式编排启动多个容器

    文章简介 asp.net core webapi容器与Mysql容器互联(network方式) docker compose方式编排启动多个容器 asp.net core webapi容器与Mysql ...

  3. Docker Compose容器编排

    Compose是Docker官方的开源项目,可以实现对Docker容器集群的快速编排.Compose 中有两个重要的概念:服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实 ...

  4. Docker Compose 容器编排

    1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...

  5. Docker | 第七章:Docker Compose服务编排介绍及使用

    前言 前面章节,我们学习了如何构建自己的镜像文件,如何保存自己的镜像文件.大多都是一个镜像启动.当一个系统需要多个子系统进行配合时,若每个子系统也就是镜像需要一个个手动启动和停止的话,那估计实施人员也 ...

  6. Docker Compose 容器编排 NET Core 6+MySQL 8+Nginx + Redis

    环境: CentOS 8.5.2111Docker 20.10.10Docker-Compose 2.1.0 服务: db  redis  web nginx NET Core 6+MySQL 8+N ...

  7. 八、docker compose容器编排

    一. Docker-Compose 1.1. 什么是Docker Compose Compose 项目是 Docker 官方的开源项目,负责实现 Docker 容器集群的快速编排,开源代码在 http ...

  8. Docker Compose(八)

    Docker Compose 是Docker官方编排(Orchstration)项目之一,负责快速在集群中部署分布式应用.   Dockerfile可以让用户管理一个单独的应用容器:而Compose则 ...

  9. Docker之Compose服务编排

    Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Comp ...

  10. (转)Docker之Compose服务编排

    转自:https://www.cnblogs.com/52fhy/p/5991344.html Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过 ...

随机推荐

  1. .NET Core项目部署到Windows系统Docker

    1.新建一个ASP.NET Core Web应用(模型-视图-控制器) 2. 项目启动Docker.Docker OS选择Windows 3.系统默认的dockerfile文件如下 #See http ...

  2. shrio

    Shrio 页面报错 <link rel="shortcut icon" href="#"/> 简单的安全框架 官网:https://shiro.a ...

  3. shell:判断某个变量是否包含字符串/变量的方法

    尝试了有3种方法: 1.使用"=~"符号,注意前后必须要有空格! ** 可以输出正确结果,被匹配的字符串必须要有引号括起来!** [clouder@ana53 bin]$ a1=' ...

  4. 0x06_自制操作系统My-OS,IDT,GDT,PIC初始化,实现键盘中断

    把class03改成class04 IDT,GDT,PIC 我来介绍什么是IDT和GDT,PIC,怎么实现键盘中断 GDT全局描述表在16位CPU用不到,到了32位CPU要用. 16位CPU实模式用基 ...

  5. orw入门报告

    orw(沙箱逃逸) 现在有很多程序在运行时禁用了系统函数,均采用了沙箱技术开启了沙箱保护,我们不能正常的get shell,只能用ROP链来调用其他的函数,例如read,write来把flag打印出来 ...

  6. Autoit 制作上传工具完美版

    一. 制作上传器 在ui自动化过程中经常遇到需要上传的动作,我们可以使用input标签来送值,但这样不太稳定,所以建议使用autoit制作出来的exe工具. 下面就教大家如何制作上传器,如何使用吧! ...

  7. JZOJ 5348. 【NOIP2017提高A组模拟9.5】心灵治愈

    题目大意 求 \(b\) (正整数集合)使得 \(\sum_{i=1}^{n+1} a_i \times b_i = 1\) 其中给定 \(b_{n+1}=m\) 且为 \(b\) 中最大值 \(1 ...

  8. Cesium渲染模块之VAO

    1. 引言 Cesium是一款三维地球和地图可视化开源JavaScript库,使用WebGL来进行硬件加速图形,使用时不需要任何插件支持,基于Apache2.0许可的开源程序,可以免费用于商业和非商业 ...

  9. PostgresSQL用returning实现mysql的last_insert_id

    今天开发问到,postgressql里面有没有像mysql那样插入一个值后返回插入的值,这个是有的,而且有更强的扩展性. 示例: [postgres@localhost ~]$ psql psql ( ...

  10. QP之QEP事件分配流程分析

    *********************************1*********************************** QActive *AO_Blinky = &l_bl ...