目录

一、简介

二、安装部署compose

2.1 Docker compose 环境的安装

2.2 YAML 文件格式及编写注意事项

2.3 Docker Compose配置常用字段

2.4 Docker Compose常用命令

三、Compose部署​

3.1 Docker Compose环境安装

3.2 使用compose编排创建容器(以nginx为例)

3.2.1 编写yml文件

3.2.2 放入相关文件

3.2.3 执行yml文件创建容器


我们知道使用一个Dockerfile模板文件可以定义一-个单独的应用容器,如果需要定义多个容器就需要服务编排。服务编排有很多种技术方案,今天给大家介绍Docker 官方产品Docker Compose 。

Dockerfile可以让用户管理一个单独的应用容器:而Compose则 允许用户在一个模板(YAM格式)中定义一组相关联的应用容器(被称为一个project,即项目),例如一个Web服务容器再加上后端的数据库服务容器等。

一、简介

  • Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。
  • Docker-Compose将所管理的容器分为三层,分别是工程(project) ,服务(service) 以及容器(container) 。Docker-Compose运行 目录下的所有文件( docker-compose . yml, extends文件或环境变量文件等)组成-一个工程,若无特殊指定工程名即为当前目录名。
  • 一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。一个服务当中可包括多个容器实例,Docker -Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如Consul Docker-Compose的工程配置文件默认为docker-compose. yml,可通过环境变量COMPOSE _FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。
  • 使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
  • Compose允许用户通过一个单独的docker- compose. yml模板文件(YAML格式)来定义一组相关联的应用容器为一个项目(project) 。
  • Docker -Compose项目由Python编写,调用Docker服 务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。

二、安装部署compose

2.1 Docker compose 环境的安装

Docker Compose是Docker的独立产品,因此需要安装Docker 之后在单独安装Docker Compose.

#下载
curl -L https://github,com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o
/usr/local/bin/docker-compose
#安装
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose --version

2.2 YAML 文件格式及编写注意事项

  1. YAML是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。
  2. 类似于XML数据描述语言,语法比XML简单的很多。
  3. YAML数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号[]括起来,hash 用花括号{}括起来。
使用YAML时需要注意下面事项:
●大小写敏感
●通过缩进表示层级关系
●不支持制表符tab键缩进,只能使用空格缩进
●缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格
●用#号注释
●符号字符后缩进1个空格,如冒号:、逗号,、横杠-
●如果包含特殊字符用单引号('')引起来会作为普通字符串处理,双引号(""): 特殊字符作为本身想表示的意思
name: "Hi, \nTom"

2.3 Docker Compose配置常用字段

​​build:指定 Dockerfile 文件名,要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定​​
​​dockerfile:构建镜像上下文路径​​
​​context:可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址​​
​​image:指定镜像​​
​​command:执行命令,覆盖默认命令​​
​​container_name:指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法 scale​​
​​deploy:指定部署和运行服务相关配置,只能在 Swarm 模式使用​​
​​environment:添加环境变量​​
​​networks:加入网络​​
​​ports:暴露容器端口,与 -p 相同,但端口​​​不能低于 60​​​
​​volumes:挂载宿主机路径或命令卷​​
​​volumes_from:从另一个服务或容器挂在卷,可选参数 :ro 和 :rw,仅​​​版本 ‘2’ 支持​​​
​​hostname:容器主机名​​
​​sysctls:在容器内设置内核参数​​
​​links:连接到另外一个容器,- 服务名称[:服务别名]​​
​​privileaged:用来给容器root权限,注意不是安全的​​
​​restart:重启策略,默认 no,always,no-failure,unless-stoped
no,默认策略,在容器退出时不重启容器​​​​on-failure,在容器非正常退出时(退出状态非0),才会重启容器​​​​on-failure:3,在容器非正常退出时重启容器,最多重启3次​​​​always,在容器退出时总是重启容器​​​​unless-stopped,在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器

2.4 Docker Compose常用命令

'命令格式:'
docker-compose [选项] [命令] [参数]'常用选项:'
-verbose:输出更多调试信息
-version:打印版本并退出
-f:使用特定的compose模板文件,默认为docker-compose.yml
-p:指定项目名称,默认使用目录名称
​​build:重新构建服务​​​
​​ps​​​:​​列出容器​​​
​​​up:创建和启动容器 ​​​
​​exec​​​:​​在容器里面执行命令​​​
​​​scale:指定一个服务容器启动数量​​​
​​top​​​:​​显示容器进程​​​
​​​logs :查看容器输出​​​
​​​down:删除容器、网络、数据卷和镜像​​​
​​​stop/start/restart:停止/启动/重启服务​​​
​​depends_on:在使用Compose时,最大的好处就是少打启动命令,但一般项目容器启动的顺序是有要求的,如果直接从上到下启动容器,可能会因为容器依赖问题而启动失败。例如在没启动数据库容器的时候启动应用容器,应用容器会因为找不到数据库而退出。depends_on标签用于解决容器的依赖、启动先后的问题。
php:depends_on:- apache- mysql

三、Compose部署​

3.1 Docker Compose环境安装

Docker Compose 是 Docker 的独立产品,因此需要安装 Docker 之后在单独安装 Docker Compose#下载
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose#或者已下载过直接从宿主机传入到/opt目录下
rz -E
mv docker-compose /usr/local/bin/#安装
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose --version

3.2 使用compose编排创建容器(以nginx为例)

3.2.1 编写yml文件

vim /root/compose_nginx/docker-compose.yml
version: '3'
services:nginx:hostname: nginxbuild:context: ./nginxdockerfile: Dockerfileports:- 1216:80- 1217:443networks:- clustervolumes:- ./wwwroot:/usr/local/nginx/html
networks:cluster:

3.2.2 放入相关文件

mkdir nginx
mkdir wwwroot
echo "this is nginx" > wwwroot/index.htmlyum -y install tree
tree ./

3.2.3 执行yml文件创建容器

docker-compose -f docker-compose.yml up -d

Docker Compose编排相关推荐

  1. 【ODOO】Docker Compose 编排ODOO应用

    Dockerfile Dockerfile 是一个用于构建自定义镜像的文本文件,文本内容包含了用于指导 Docker 创建自定义镜像的一系列指令,是用于创建镜像的蓝图. 这通常在将我们自己的程序打成D ...

  2. 【Spring Cloud 基础设施搭建系列】Spring Cloud Demo项目 使用Docker Compose编排Spring Cloud微服务

    文章目录 Docker Compose快速人门 入门示例 使用Docker Comose编排Spring Cloud微服务 使用Maven插件读取Dockerfile进行构建 使用Maven插件构建D ...

  3. Docker Compose编排(写法格式及实验)

    目录 一.Docker Compose前言 二.Docker compose 的文件结构 1.docker compose配置常用字段 2.docker compose常用命令 三.使用compose ...

  4. 安装Docker.v19和配置Docker Compose编排工具

    博文目录 一.Compose简介 二.安装Docker 1.安装19.03.9版本Docker 2.配置镜像加速 三.安装使用Docker Compose 1.Github下载Docker Compo ...

  5. dockers-系统学习-docker compose服务编排

    dockers-系统学习-docker compose服务编排 一.服务编排 1.1.概念 按照一定的业务规则批量管理容器 1.2.问题 微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会 ...

  6. Docker Compose 服务编排

    微服务架构中一般会有多个微服务,每一个微服务一般都会部署多个实例,如果每一个服务都手动启动,工作量会很大.服务编排就是按照一定的业务规则进行批量管理容器. docker基础请参考 Docker相关内容 ...

  7. 使用Docker Compose部署基于Sentinel的高可用Redis集群

    大家一定非常熟悉如何利用Docker启动单个Redis容器用于开发环境,本文将介绍如何利用Docker Compose模板在本机和云端部署基于Sentinel的高可用Redis 3集群. Redis集 ...

  8. Docker(容器、数据卷、Docker Compose)

    Docker 本次介绍以下几个内容: Docker概念 容器数据卷 Dockerfile 应用部署 服务编排 私有仓库 Docker概念 Docker 是一个开源的应用容器引擎 • 诞生于 2013 ...

  9. Docker折腾记: (3)Docker Compose构建Gitlab,从配置(https,邮箱验证)到基本可用

    前言 gitlab 11.1内置了CI/CD,这个特性从gitlab 8+就开始有了,不过配置比较琐碎 经过几个大版本的迭代,现在已经简化了使用方式,也修复了一些坑,这个特性大大吸引了我; gitla ...

最新文章

  1. 人民日报钟声:以和平合作守护世界安全
  2. SAP号码段表及相关操作T-CODE
  3. 非苹果PC安装MacOS
  4. 位地址和字节地址换算_面试常考,项目易错,长文详解C/C++中的字节对齐
  5. Python使用傅里叶变换调整音频文件音量
  6. 电大计算机专业毕业自我鉴定,电大毕业生计算机专业自我鉴定
  7. Linux上mysql安装详细教程
  8. 2019年,免费的检测僵尸粉软件《雪球微信小助手》,无打扰检测清理微信僵尸粉
  9. 慧荣SM2258XT-主板CE跳线Toggle土狗跳线合集整理(持续更新)
  10. Maya材质球与渲染基础--Redshift,Arnold,Xgen
  11. JMeter 进行 MD5加密
  12. Ubuntu 20.04 从零开始安装MySQL 8.0并重置root密码
  13. CSDN,hen hao,hen qiang da
  14. Perl年满30岁,其社区继续蓬勃发展
  15. 2023阿里云账号注册流程(多种注册方法随便选)
  16. IDL文件读写(七)
  17. ogr2ogr导入导出数据。
  18. 教你用单片机表白2019(文末送代码)
  19. Sqlmap参数详解
  20. 【陈工笔记】SNN(Spiking Neural Network)的理解

热门文章

  1. 13个漂亮的黑色网站设计
  2. Android学习笔记5——Button属性详解
  3. 使用css实现二级导航栏
  4. 短链接的应用场景总结
  5. SECS/GEM300半导体标准,12寸晶圆半导体标准
  6. 基于KNN算法——手写海伦约会(学习)
  7. 【PAT甲级 - C++题解】1076 Forwards on Weibo
  8. AFLW2000-3D数据库介绍及自带代码使用
  9. OpenGL进阶之立方体贴图
  10. java的swing教程_java图形化Swing教程(一)