Docker容器(五)Docker Compose

一、概述

1.1介绍

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

`Compose` 恰好满足了这样的需求。它允许用户通过一个单独的 `docker-compose.yml` 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。 

 1.2简介

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

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

  • 服务 (`service`):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目 (`project`):由一组关联的应用容器组成的一个完整业务单元,在 `docker-compose.yml` 文件中定义。

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


一个工程当中,可以包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。

一个服务中可以包括多个容器实例,docker-compose并没有解决负载均衡的问题。因此需要借助其他工具实现服务发现及负载均衡,比如consul。 `Compose` 定位是 「定义和运行多个 Docker 容器的应用

`Compose` 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 `Compose` 来进行编排管理。 

 1.3使用步骤

1.编写Dockerfile定义各个微服务应用并构建出对应的镜像文件dockerfile的使用,使用dockerfile部署springboot项目。

2.使用 docker-compose.yml 定义一个完整业务单元,安排好整体应用中的各个容器服务。

3.最后,执行docker-compose up命令 来启动并运行整个应用程序,完成一键部署上线。

version: "3.0"  # Docker Compose的版本
services:  # 定义服务mysqldb:  # MySQL数据库服务image: mysql:5.7.19  # 使用的MySQL镜像版本container_name: mysql  # 容器名称ports:  # 端口映射- "3306:3306"  # 将容器的3306端口映射到宿主机的3306端口volumes:  # 数据卷挂载- /root/mysql/conf:/etc/mysql/conf.d  # 配置文件目录- /root/mysql/logs:/logs  # 日志目录- /root/mysql/data:/var/lib/mysql  # 数据目录environment:  # 环境变量MYSQL_ROOT_PASSWORD: root  # 设置MySQL的root密码为rootnetworks:  # 网络配置- ems  # 连接到名为ems的网络depends_on:  # 依赖服务- redis  # 依赖于redis服务redis:  # Redis服务image: redis:4.0.14  # 使用的Redis镜像版本container_name: redis  # 容器名称ports:  # 端口映射- "6379:6379"  # 将容器的6379端口映射到宿主机的6379端口networks:  # 网络配置- ems  # 连接到名为ems的网络volumes:  # 数据卷挂载- /root/redis/data:/data  # 数据目录command: redis-server  # 启动Redis服务器的命令networks:  # 定义网络ems:  # 名为ems的网络

 启动docker-compose

docker-compose -f docker-compose.yaml up -d  //-f调用文件。-d:开启守护进程

1.4 Docker Compose 编排字段部分详解

version

version 字段指定了 Docker Compose 编排文件的版本,例如:

version: '3'

services

services 字段指定了在 Docker Compose 编排中要运行的服务。每个服务都有一个名称,并指定要使用的镜像和容器的配置选项。例如:

services:mysql: #服务名image: mysql:5.5 #mysql镜像

build 和 image

build 字段允许在 Docker Compose 编排中指定 Dockerfile 的位置,从而可以使用 Docker Compose 构建镜像。image 字段指定要使用的 Docker 镜像。例如:

services:mysql: #服务名image: mysql:5.5 #mysql镜像user: #服务名build: ./user #这里为用户微服务文件夹,里面存放的是该服务代码jar包和Dockerfile文件

volumes 和 environment

volumes 字段指定了要使用的数据卷。environment 字段指定了要设置的环境变量。例如:

services:mysql: #服务名image: mysql:5.5 #mysql镜像environment:MYSQL_ROOT_PASSWORD: 000000 #设置数据库密码volumes:- "$PWD/mysql/data:/var/lib/mysql" #数据卷挂载

 ports 和 expose

ports 字段指定了要宿主机映射到容器的端口(宿主机端口:容器端口)。expose 字段是用于在 Docker 容器内部暴露端口的选项,可以让其他容器连接到这些端口,但不会将它们映射到 Docker 主机上。expose 与 ports 不同的是,expose 字段仅仅是将容器内部的端口暴露给其他容器使用,而不是直接映射到宿主机上的端口

 services:gateway: #服务名build: ./gateway #这里为网关文件夹,里面存放的是该服务代码jar包和Dockerfile文件ports:-"7000:7000"nginx:image: nginxexpose:-"8080"

当然命令还有很多,这里进行部署实战的时候只用到上述这些编排字段,所以这里重点写了这些,其余的进行省略。

networks

配置容器连接的网络。

version: "3"
services:some-service:networks:- some-network- other-networknetworks:some-network:other-network:

container_name

指定容器名称。默认将会使用 `项目名称_服务名称_序号` 这样的格式。

`environment

设置环境变量。你可以使用数组或字典两种格式。

只给定名称的变量会自动获取运行 Compose 主机上对应变量的值,可以用来防止泄露不必要的数据

environment:RACK_ENV: developmentSESSION_SECRET:environment:- RACK_ENV=development- SESSION_SECRET

command

覆盖容器启动后默认执行的命令。

command: echo "hello world"

------------------------------

env_file

从文件中获取环境变量,可以为单独的文件路径或列表。

如果通过 `docker-compose -f FILE` 方式来指定 Compose 模板文件,则 `env_file` 中变量的路径会基于模板文件路径。

如果有变量名称与 `environment` 指令冲突,则按照惯例,以后者为准。

depends_on

解决容器的依赖、启动先后的问题。以下例子中会先启动 `redis` `db` 再启动 `web`

build

指定 `Dockerfile` 所在文件夹的路径(可以是绝对路径,或者相对 docker-compose.yml 文件的路径)。 `Compose` 将会利用它自动构建这个镜像,然后使用这个镜像。

 

总结

1.5Docker Compose 常用命令

docker --version #查看版本docker-compose -h    # 查看帮助docker-compose up    # 启动所有docker-compose服务docker-compose up -d    # 启动所有docker-compose服务并后台运行docker-compose down     # 停止并删除容器、网络、卷、镜像。docker-compose exec  yml里面的服务id   # 进入容器实例内部  docker-compose exec docker-compose.yml文件中写的服务id /bin/bashdocker-compose ps      # 展示当前docker-compose编排过的运行的所有容器docker-compose top       # 展示当前docker-compose编排过的容器进程docker-compose logs  yml里面的服务id   # 查看容器输出日志docker-compose config     # 检查配置docker-compose config -q  # 检查配置,有问题才有输出docker-compose restart   # 重启服务docker-compose start     # 启动服务docker-compose stop      # 停止服务docker-compose rm [options] [SERVICE...]  #删除所有(停止状态的)服务容器。

二、实战mongodb

version: '3.7'
services:mongo:image: mongoports:- "27017:21017"volumes:- ./data:/data/dbenvironment:MONGO_INITDB_ROOT_USERNAME: mongoMONGO_INITDB_ROOT_PASSWORD: 1213MONGO_INITDB_DATABASE: testcommand: --bind_ip_all

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STC89C51学习笔记(五)

STC89C51学习笔记(五) 综述:文本讲述了代码中速写模板的创建、如何将矩阵键盘的按键与数字一一对应以及如何创建一个矩阵键盘密码锁。 一、速写模板 点击“templates”,再鼠标右键选择配置,按照以下方式即可修改一些…

4.7 IO day6

1&#xff1a;有一个隧道&#xff0c;全长5公里&#xff0c;有2列火车&#xff0c;全长200米&#xff0c; 火车A时速 100公里每小时 火车B时速 50公里每小时 现在要求模拟火车反复通过隧道的场景(不可能2列火车都在隧道内运行) #include <stdio.h> #include <string.…

Mac安装配置Appium

一、安装 nodejs 与 npm 安装方式与 windows 类似 &#xff0c;官网下载对应的 mac 版本的安装包&#xff0c;双击即可安装&#xff0c;无须配置环境变量。官方下载地址&#xff1a;https://nodejs.org/en/download/ 二、安装 appium Appium 分为两个版本&#xff0c;一个是…

【iOS】UITableView性能优化

文章目录 前言一、优化的本质二、卡顿产生原因三、CPU层面优化1.使用轻量级对象2.cellForRowAtIndexPath方法中不要做耗时操作3.UITableView的复用机制4.提前计算好布局了解tableView代理方法执行顺序cell高度计算rowHeightestimatedRowHeight 高度计算进行时机rowHeight计算时…

阿里云服务器可以干嘛?阿里云服务器八大用途介绍

阿里云服务器可以干嘛&#xff1f;能干啥你还不知道么&#xff01;简单来讲可用来搭建网站、个人博客、企业官网、论坛、电子商务、AI、LLM大语言模型、测试环境等&#xff0c;阿里云百科aliyunbaike.com整理阿里云服务器的用途&#xff1a; 阿里云服务器活动 aliyunbaike.com…

XML HTTP传输 小结

what’s XML XML 指可扩展标记语言&#xff08;eXtensible Markup Language&#xff09;。 XML 被设计用来传输和存储数据&#xff0c;不用于表现和展示数据&#xff0c;HTML 则用来表现数据。 XML 是独立于软件和硬件的信息传输工具。 应该掌握的基础知识 HTMLJavaScript…

视听杂志知网收录期刊投稿发表论文

《视听》是由国家新闻出版总署批准的正规的&#xff0c;兼有新闻传播、新媒体理论探索的当代学术性省级综合期刊。坚持正确的理论导向&#xff0c;全面展示广播影视事业发展中出现的新情况、新事物&#xff0c;探索现代传媒基础理论&#xff0c;研究网络传播、通讯传播等新媒体…

【SCI绘图】【小提琴系列1 python】绘制按分类变量分组的垂直小提琴图

SCI&#xff0c;CCF&#xff0c;EI及核心期刊绘图宝典&#xff0c;爆款持续更新&#xff0c;助力科研&#xff01; 本期分享&#xff1a; 【SCI绘图】【小提琴系列1 python】绘制按分类变量分组的垂直小提琴图&#xff0c;文末附完整代码 小提琴图是一种常用的数据可视化工具…

ES入门十四:分词器

我们存储到ES中数据大致分为以下两种&#xff1a; 全文本&#xff0c;例如文章内容、通知内容精确值&#xff0c;如实体Id 在对这两类值进行查询的时候&#xff0c;精确值类型会比较它们的二进制&#xff0c;其结果只有相等或者不想等。而对全文本类型进行等值比较是不太实现…

顺序统计量

一、顺序统计量 定义&#xff1a;将长度为 n 的数组按升序排序后&#xff0c;第 i 个位置的数字是该数组的第 i 小的量&#xff0c;称之为第 i 顺序统计量。 则一个数组中的最小值是第1顺序统计量&#xff0c;最大值是第n顺序统计量&#xff0c;中位数是第 (n1)/2 顺序统计量 …

C-结构体对齐

结构体对齐&#xff08;Struct Alignment&#xff09;&#xff1a;是计算机编程中的一个概念&#xff0c;通常用于描述编译器如何安排结构体的成员在内存中的存储方式。 在很多计算机体系结构中&#xff0c;访问未对齐的数据可能会导致性能下降&#xff0c;甚至是程序崩溃。为了…

rsync 远程同步----------安全高效的异地备份策略

目录 一、rsync介绍 rsync和cp的区别 rsync和scp的区别 二、rsync同步方式 rsync备份的方式 三、配置rsync源服务器 ①本地复制 ②下行同步 ③上行同步 四、常用Rsync命令 五、配置源的两种表达方法 六、部署rsync下行同步 ①环境准备 ②配置rsync源服务器-------…

Spring源码解析-容器基本实现

spring源码解析 整体架构 defaultListableBeanFactory xmlBeanDefinitionReader 创建XmlBeanFactory 对资源文件进行加载–Resource 利用LoadBeandefinitions(resource)方法加载配置中的bean loadBeandefinitions加载步骤 doLoadBeanDefinition xml配置模式 validationMode 获…

HTTP 常见的状态码以及其适用场景

是什么 HTTP状态码&#xff08;英语&#xff1a;HTTP Status Code&#xff09;&#xff0c;用以表示网页服务器超文本传输协议响应状态的3位数字代码 它由 RFC 2616规范定义的&#xff0c;并得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774与 RFC 4918等规范扩展 简单来讲&#…

FPGA + 图像处理(三)生成3x3像素矩阵

前言 生成NxN的像素矩阵是对图像进行各类滤波操作的基本前提&#xff0c;本文介绍一种通过bram生成3x3矩阵的方法。 程序 生成bram核 因为本文介绍的是基于bram生成的3x3像素矩阵&#xff0c;所以要先生成两个bram核&#xff0c;用于缓存前两行图像数据 在 IP catalog中选…

【LeetCode热题100】74. 搜索二维矩阵(二分)

一.题目要求 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否则&#xff0c;…

特别详细的Spring Cloud 系列教程1:服务注册中心Eureka的启动

Eureka已经被Spring Cloud继承在其子项目spring-cloud-netflix中&#xff0c;搭建Eureka Server的方式还是非常简单的。只需要通过一个独立的maven工程即可搭建Eureka Server。 我们引入spring cloud的依赖和eureka的依赖。 <dependencyManagement><!-- spring clo…

CentOS7.9.2009安装elasticsearch7.11.1(单节点)

本文章使用CentOS7.9.2009服务器安装elasticsearch7.11.1软件 1.服务器信息 [root@elasticsearch ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@elasticsearch ~]# [root@elasticsearch ~]# cat /etc/hosts | grep elasticsearch 192.168.10.24…

【MacBook系统homebrew镜像记录】

安装 使用Homebrew 国内源安装脚本,贼方便&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"切换至清华大学镜像源&#xff1a; 命令合并&#xff1a; 分别切换了 brew.git、 homebrew-core.git、 homebrew-…

windows一键休眠,一键唤醒

1.使windows睡眠不可用&#xff0c;cmd以管理员身份运行&#xff1a; powercfg.exe /hibernate off 2.桌面创建快捷键 Rundll32.exe Powrprof.dll,SetSuspendState Sleep