Docker Compose 实现单机容器集群编排管理

news2024/12/26 11:44:44

目录

  • Docker Compose
  • Docker Compose 三大概念
    • 1. Docker Compose 环境安装
    • 2. YAML 文件格式及编写注意事项
    • 3. Docker Compose配置
      • restart 设置重启策略,no,always,no-failure,unless-stopped
    • 4. Docker Compose 常用命令选项
    • 5. Docker Compose 文件结构

Docker Compose

  • docker compose 实现单机容器集群编排管理(使用一个模版文件定义过个应用容器的启动参数和依赖管理,并使用docker compose来根据这个模版文件的配置来启动容器)

Docker Compose 三大概念

  1. 项目/工程
  2. 服务
  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

#安装

chmod +x /usr/local/bin/docker-compose

#查看版本

docker-compose --version

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

YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。类似于 json 数据描述语言,语法比 json 简单的很多。YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号 [] 括起来, hash 用花括号 {} 括起来。

使用 YAML 时需要注意下面事项:
●大小写敏感
●通过缩进表示层级关系
●不支持制表符 tab 键缩进,只能使用空格缩进
●缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格
●用 # 号注释
●符号字符后缩进1个空格,如冒号 : 、逗号 , 、横杠 -
●如果包含特殊字符用单引号(’ ')引起来会作为普通字符串处理,双引号(" "): 特殊字符作为本身想表示的意思

3. Docker Compose配置

常用字段

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

restart 设置重启策略,no,always,no-failure,unless-stopped

restart设置重启策略,no,always,no-failure,unless-stopped
no默认策略,在容器退出时不重启容器。
on-failure在容器非正常退出时(退出状态非0),才会重启容器。
on-failure:3在容器非正常退出时重启容器,最多重启3次。
always在容器退出时总是重启容器。
unless-stopped在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器。

depends_on : 在使用Compose时,最大的好处就是少打启动命令,但一般项目容器启动的顺序是有要求的,如果直接从上到下启动容器,可能会因为容器依赖问题而启动失败。例如在没启动数据库容器的时候启动应用容器,应用容器会因为找不到数据库而退出。depends_on标签用于解决容器的依赖、启动先后的问题。

php:
  depends_on:
    - apache
    - mysql

4. Docker Compose 常用命令选项

格式:docker-compose [功能选项]
字段描述
build重新构建服务
ps列出容器
up创建和启动容器
exec在容器里面执行命令
scale指定一个服务容器启动数量
top显示容器进程
logs查看容器输出
down删除容器、网络、数据卷和镜像
stop/start/restart停止/启动/重启服务

5. Docker Compose 文件结构

yum install -y tree
tree /opt/compose_nginx
/opt/compose_nginx/
├── docker-compose.yml				#创建模板脚本
├── nginx
│?? ├── Dockerfile					#创建容器脚本
│?? ├── nginx-1.12.0.tar.gz			#复制源码包
│?? └── run.sh						#启动服务脚本
└── wwwroot
    └── index.html					#站点网页

在这里插入图片描述
vim /opt/lnmp/compose-lnmp/docker-compose
在这里插入图片描述

启动docker-compose

docker-compose -f docker-compose.yml up -d
----------------------------------------------------------------------------------------------------------
-f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME :指定项目名称,默认使用目录名称
-d :在后台运行
----------------------------------------------------------------------------------------------------------

docker-compose ps #查看信息,必须在docker-compose.yml所在目录执行此命令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/787947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

消息队列(一)-- RabbitMQ入门(2)

发布确认 发布确认原理 生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从1开始),一旦消息被投递到所有匹配的队列之后,broker 就会发…

蓝桥杯省赛真题——最少刷题数

2022年第13届省赛,蓝桥杯真题。 (本笔记适合初通 Python 的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单…… 地址&…

【前端知识】React 基础巩固(三十三)——Redux的使用详解

React 基础巩固(三十三)——Redux的使用详解 Redux的使用详解 针对React 基础巩固(三十二)中的案例,我们希望抽取页面中共有的代码(例如下方的代码),使用高阶组件统一拦截。 constructor() {super();this.…

Python入门【 for循环和可迭代对象遍历、嵌套循环和综合练习、continue语句、else语句、循环代码优化】(八)

👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白 📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 📧如果文章知识点有错误…

两个数组的dp问题(2)--动态规划

一)交错字符串: 97. 交错字符串 - 力扣(LeetCode) 一)确定一个状态标识: 如果我选择s1的一段区间,再进行选择s2得一段区间那么s3这个字符串的长度就已经固定了 预处理:在s1字符串s2字符串和s3字符串前面加上一个虚拟字符,让下标从…

力扣热门100题之最小覆盖子串【困难】【滑动窗口】

题目描述 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。 注意: 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。…

java项目之人才公寓管理系统(ssm+mysql+jsp)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的人才公寓管理系统。技术交流和部署相关看文章末尾! 开发环境: 后端: 开发语言:Java 框架&…

JVM-提问纯享版

一、内存区域 介绍下 Java 内存区域(运行时数据区)内存分配方式内存分配并发问题对象的访问定位的两种方式(句柄和直接指针两种方式) 二、垃圾回收 如何判断对象是否死亡(两种方法)。简单的介绍一下强引…

Web3教程| 什么是地址监控?如何使用地址监控追踪黑客地址?

在当今Web3世界里,保护个人资产安全至关重要。据报道在2023年上半年,Web3领域因黑客攻击事件造成的损失高达4.794亿美元。 此外,10多个公链遭受黑客攻击,其中以太坊链遭受的损失最多,约为2.87亿美元。这些黑客的存在迫…

maven配置下载源

有得时候项目中会配置默认的谷歌作为源下载依赖这样会导致下载很慢,我们可以将谷歌的源更改为国内的阿里源,这样下载就会比较快 查看pom.xml文件 若是在配置时没有指定该依赖的下载源的话,就是默认去谷歌源下载,这时我们在项目po…

KEGG 通路如何找

链接: KEGG: Kyoto Encyclopedia of Genes and Genomes 学习链接: 科研干货|KEGG信号通路数据库轻松上手_哔哩哔哩_bilibili 示例:我要找人的结直肠癌信号通路: 1. 2. 3. 4. over

pytest自动化测试框架,真正做到从0到1由浅入深详细讲解【万字级】

目录 嗨咯铁汁们,很久不见,我还是你们的老朋友凡叔,这里也感谢各位小伙伴的点赞和关注,你们的三连是我最大的动力哈,我也不会辜负各位的期盼,这里呢给大家出了一个pytest自动化测试框架由浅入深详细讲解。 …

mysql(二)SQL语句

目录 一、SQL语句类型 二、数据库操作 三、数据类型 四、创建 五、查看 六、更改 七、增、删、改、查 八、查询数据 一、SQL语句类型 SQL语句类型: DDL DDL(Data Definition Language,数据定义语言):用于…

项目经理:我不是不喜欢工作,只是不喜欢开会

大家好,我是老原。 如何高效的开会,我觉得我可太有发言权了!作为项目经理,每天就是开会,开会还好,还经常是无效会议。 职场人最讨厌的事情除了加班就是开会了。但很多人认为开会比加班更可恶,…

hackthebox—Sau

文章目录 1、信息收集2、ssrf3、命令执行 1、信息收集 fscan扫描ip发现存在22和55555,但是实际上这个fscan扫描的不全 再试试nmap nmap -sV -sC -sT -v -T4 10.10.11.224 有三个端口,其中80应该是只能内网访问,看来需要借助ssrf了。 2、s…

Windows Server 2022 中文版、英文版下载 (updated Jul 2023)

Windows Server 2022 中文版、英文版下载 (updated Jul 2023) Windows Server 2022 正式版,2023 年 7 月更新 请访问原文链接:https://sysin.org/blog/windows-server-2022/,查看最新版。原创作品,转载请保留出处。 作者主页&a…

华为OD机试真题 Java 实现【文件目录大小】【2023 B卷 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明4、再输入5、再输出6、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题…

Python内置函数系统学习(1)——数据转换与计算(详细语法参考 + 参数说明 + 具体示例)

世界上最重要的东西就是纸,重至承载文明的崛起,轻至承载一个饱满厚实的人生。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌟[2]…

最小生成树算法(Prim Kruskal)

目录 最小生成树算法总览最小生成树的定义及性质Prim(普利姆)算法1.朴素Prim算法算法步骤 2.堆优化Prim算法算法步骤 3.算法运用Prim算法求最小生成树流程实现朴素Prim的代码实现堆优化Prim的代码实现 Kruskal(克鲁斯卡尔)算法1.算…

IAR for STM8L标准库驱动ST7735 1.8‘‘LCD显示

IAR for STM8L标准库驱动ST7735 1.8’LCD显示 ✨STM8驱动ST7735 1.8’LCD屏幕的话,自己移植的话,可以参考stm32标准库驱动来移植,GPIO的操作方式和STM32标准库函数名都一致,移植起来改动量很少,这仅针对软件驱动方式。…