Docker Compose介绍及部署

news2024/11/26 5:50:46

Docker Compose介绍及部署

  • 一、Docker Compose介绍:
    • 1、Compose简介
    • 2. YAML 文件格式及编写注意事项
    • 3. YAML数据结构
  • 二、Docker Compose部署
    • 1、 Docker Compose 环境安装
    • 2.、Docker Compose配置常用字段
    • 3、Docker Compose 常用命令
    • 4、Docker Compose 文件结构
        • 编写配置文件docker-compose.yml并创建容器

一、Docker Compose介绍:

1、Compose简介

  • Docker Compose 项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Docker. Compose 项目由Python 编写,调用Docker 服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose 来进行编排管理。
  • Docker Compose 是一个用于定义和运行多容器Docker应用程序的工具。它允许用户使用YAML 文件来定义应用程序的配置,包括容器的数量、容器之间的依赖关系、环境变量、端口映射以及其他设置。然后,用户可以使用docker-compose 命令来启动和管理这些容器。使用Docker Compose 可以方便地管理多个容器,例如,可以同时启动一个Web 服务器容器和一个数据库容器,并在它们之间建立网络连接。
  • Docker Compose还支持自定义网络,使得容器可以在不同的网络中进行通信。
  • Docker Compose 文件通常包含一个或多个服务,每个服务都由一个或多个容器组成。服务定义了容器应该执行的任务,以及容器之间的依赖关系。例如,一个Web服务器服务可以包含一个或多个Web服务器容器,而这些容器又依赖于–个数据库容器。
  • Docker-Compose 将所管理的容器分为三层,分别是项目(project) ,服务(service) 以及容器(container) 。Docker-Compose 运行目录下的所有文件组成一个项目,若无特殊指定项目名即为当前目录名。一个项目当中可包含多个服务,每个服务都包含一个名称、镜像、端口映射、环境变量、挂载点等信息。
  • Docker-Compose的项目配置文件默认为docker-compose. yml,可通过环境变量COMPOSE_ FTLE 或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。
  • Compose允许用户通过一个 单独的docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一一个项目(project )。

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

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

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

使用 YAML 时需要注意下面事项:

  • 不支持制表符 tab 键缩进,需要使用空格缩进
  • 通常开头缩进2个空格
  • 大小写敏感
  • 通过缩进表示层级关系
  • 字符后缩进1个空格,如冒号:逗号 ,横杠 -
  • 缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格
  • #号注释
  • 如果包含特殊字符用单引号‘’引起来
  • 布尔值必须用引号 “” 括起来( true 和 false

3. YAML数据结构

结构类型说明
对象键值对的集合
数组一组按次序排列的值,又称序列
纯量单个的,不可再分的值
# 纯量
hello

# 数组
- Cat
- Dog
- Goldfish

# 对象
animal: pets

二、Docker Compose部署

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.、Docker Compose配置常用字段

字段描述
build指定 Dockerfile 文件名,要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定
dockerfile指定当前目录中的dockerfile文件
context是 dockerfile 的路径
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
no:默认策略,在容器退出时不重启容器。
on-failure:在容器非正常退出时(退出状态非0),才会重启容器。
on-failure:3:在容器非正常退出时重启容器,最多重启3次。
always:在容器退出时总是重启容器。
unless-stopped:在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器。
  • depends_on标签用于解决容器的依赖、启动先后的问题。
php:
  depends_on:
    - apache
    - mysql

3、Docker Compose 常用命令

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

4、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					#站点网页

编写配置文件docker-compose.yml并创建容器

vim /opt/compose_apache/docker-compose.yml
version: '3'

services:
  apache:
    image: httpd:latest
    container_name: httpd-xc
    ports:
    - 9912:80
    volumes:
    - ./html:/usr/local/apache2/htdocs
    networks:
      lamp:
        ipv4_address: 172.20.0.10

networks:
  lamp:
    driver: bridge
    ipam:
      config:
      - subnet: 172.20.0.0/16

在这里插入图片描述

选项描述
-f, --file FILE使用特定的 compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME指定项目名称,默认使用目录名称
-d在后台运行
cd /opt/compose_apache/
docker-compose -f docker-compose.yml up -d                             ##必须在docker-compose.yml所在目录执行此操作


docker ps -a
CONTAINER ID   IMAGE          COMMAND              CREATED          STATUS          PORTS                                   NAMES
0901be856a8c   httpd:latest   "httpd-foreground"   19 seconds ago   Up 18 seconds   0.0.0.0:9912->80/tcp, :::9912->80/tcp   httpd-xc

echo "have fun" > ./html/index.html
cat ./html/index.html

用访问http://192.168.92.13:9912/index.html

docker-compose down    #自动关闭并删除容器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

第五章:通过对抗擦除的目标区域挖掘:一种简单的语义分割方法

0.摘要 我们研究了一种逐步挖掘具有鉴别性的物体区域的原则方法,使用分类网络来解决弱监督语义分割问题。分类网络只对感兴趣对象中的小而稀疏的鉴别性区域有响应,这与分割任务的要求相背离,分割任务需要定位密集、内部和完整的区域以进行像素…

C#——多线程之Task

C#——多线程之Task 前言一、Task是什么?二、各应用场景以及实例分析1.异步执行代码2.等待异步操作完成3.并行执行多个任务4.处理异常5.取消异步操作 三、一些其他问题1.WhenAll与WhenAny的区别 总结 前言 在代码编写过程中,经常会用到多线程的知识&…

Vue如何配置eslint

eslint官网: eslint.bootcss.com eslicate如何配置 1、选择新的配置: 2、选择三个必选项 3、再选择Css预处理器 4、之后选择处理器 5、选择是提交的时候就进行保存模式 6、放到独立的配置文件上去 7、最后一句是将自己的数据存为预设 8、配合console不要出现的规则…

每天一道C语言编程(2^k进制数)

题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数。 (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位。 (3)…

NoSQL之 Redis 部署,配置与优化

文章目录 NoSQL之 Redis配置与优化一.关系数据库与非关系型数据库1.关系型数据库2.非关系型数据库3.关系型数据库和非关系型数据库区别4.非关系型数据库产生背景 二.Redis简介1.了解Redis2.Redis 具有以下几个优点3.Redis为何这么快 三.Redis 安装及应用1.Redis 安装部署2.Redi…

linux网卡命名规则与修改方法

一.前言: 在早期的的操作系统中例如fedora13或者ubuntu15之前网卡命名的方式为eth0,eth1,eth2,属于biosdevname 命名规范。当然这是针对intel网卡的命名规则,对于realtek类型的网卡会命名为ens33。但是这个编号往往不一…

数据库运维——MySQL主从复制

1.理解MySQL主从复制原理。 2.完成MySQL主从复制。 一、MySQL主从复制原理 MySQL主从复制是指将一个MySQL数据库服务器(称为主服务器)上的数据复制到其他MySQL数据库服务器(称为从服务器)的过程。它的原理如下: 主服…

如何利用OpenAI的函数调用特性

如何利用OpenAI的函数调用特性 函数调用能实现哪些功能? 简单来说,函数调用功能可以助你在请求方法时构建结构化的数据。因为生成模型的特性,它产生的数据往往是无结构的,即使在提示(prompt)中指定了输出格式,但实际…

3-Linux实操

Linux实践操作 开关机、重启、用户登陆注销关机&重启用户登陆和注销 用户管理添加用户修改用户密码删除用户查询用户信息切换用户查看当前用户用户组的添加和删除用户和组相关文件 实用指令指定运行级别init 命令帮助指令文件目录类时间日期类搜索查找类🔍压缩和…

新能源汽车直流充电桩和交流充电桩的区别

直流充电桩和交流充电桩的区别 你是否曾经想过,为什么有的电动汽车可以在半小时内充满电,而有的却需要几个小时?其实,这都取决于它们所使用的充电桩的不同。那么,直流充电桩和交流充电桩到底有哪些区别呢? 首先,工作…

网络变压器配套使用的网口连接器的选型注意事项及选购关注要点

Hqst盈盛(华强盛)电子导读:采购人员在网口连接器选型中如何选用到合适的产品,选用时要注意到哪些事项,这节将结合网口连接器实物和大家一起探讨,希望对大家有些帮助。 我们可以通过对下面五个方面的详细了解…

网工内推 | 售前、售后工程师,IE认证优先

01 广州佳杰科技有限公司 招聘岗位:IT售前工程师 职责描述: 1、负责所在区域 IT 产品的售前技术支持工作,包括客户交流、方案编写、配置报价、投标应标、测试、赋能等; 2、与厂商相关人员建立和保持良好的关系,相互配合,提高项目成功率和厂商满意度; 3、…

每日一题——链表中倒数最后k个结点

题目 输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。 如果该链表长度小于k,请返回一个长度为 0 的链表。 数据范围:0≤n≤$105,0≤ai≤109,0≤k≤109 要求:…

MongoDB索引结构,到底是B-Tree还是B+Tree,请看这里!!

起因 网上关于MongoDB的索引结构到底是b树,还是b树的争论有很多,无法统一结论。 由来 MongoDB从3.2版本开始默认采用了WiredTiger存储引擎,网上很多说法是此引擎是BTree的索引结构,甚至有图有真相。但是认为MongoDB一直是B-Tre…

Docker compose(容器编排)

Docker compose(容器编排) 一、安装Docker compose 1.安装Docker compose Docker Compose 环境安装 Docker Compose 是 Docker 的独立产品,因此需要安装 Docker 之后在单独安装 Docker Compose#下载 curl -L https://github.com/docker/co…

htmlCSS-----定位

目录 前言 定位 分类和取值 定位的取值 1.相对定位 2.绝对位置 元素居中操作 3.固定定位 前言 今天我们来学习html&CSS中的元素的定位,通过元素的定位我们可以去更好的将盒子放到我们想要的位置,下面就一起来看看吧! 定位 定位posi…

HR SaaS厂商,进入决赛圈

在愈发需要降本增效的节点,数字化的价值也更在被越来越多的企业重新审视,这种重视不再是之前或有或无的可选项,而是基于真正人效比维度的必选项 作者|斗斗 编辑|皮爷 出品|产业家 SaaS行业,正在发生一些微妙的变化。 以HR …

如何提高小程序UV?实用策略助你增加用户规模和活跃度

摘要:小程序的UV(Unique Visitors)是衡量用户规模和活跃度的重要指标,对于开发者和运营者来说具有重要意义。本文将分享一些实用策略,帮助你提高小程序的UV,增加用户规模和活跃度。从优化推广渠道、提升用户…

css实现鼠标滑动左下角弹框带动画效果

代码 <div classNamekuang></div> css代码 .kuang {height: 500px;width: 400px;// background-color: #fff;position: absolute;z-index: 10;bottom: 0;transform: translateX(-390px)}.kuang:hover {animation: myanimation 3s linear 1;animation-fill-mode:f…

LT9211C 是一款MIPI/RGB/2PORT LVDS互转的芯片

LT9211C 1.描述&#xff1a; Lontium LT9211C是一个高性能转换器&#xff0c;可以在MIPI DSI/CSI-2/双端口LVDS和TTL之间相互转换&#xff0c;除了24位TTL到24位TTL&#xff0c;并且不推荐同步和DE的2端口10位LVDS和24位TTL之间的转换。LT9211C反序列化输入的MIPI/LVDS/TTL视…