高可用篇_A Docker容器化技术_V 基于DockerCompose实现容器编排

原创作者:田超凡(程序员田宝宝) 

版权所有,引用请注明原作者,严禁复制转载

Docker Compose

Sit pre prd环境

为什么需要使用Docker Compose

Docker Compose  容器编排技术

容器编排技术

1.现在我们有一个springboot项目,需要依赖Redis、mysql5.7、nginx。

如果使用docker原生部署的话,则需要安装Redis、mysql5、nginx容器,在才可以启动我们springboot项目,这样的话部署项目的流程非常复杂,所以需要引入我们的

Docker compose实现容器编排技术。

基本的概念

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

Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。

开发一个springboot项目---大工程

  1. 依赖mysql
  2. 依赖redis
  3. 依赖zk

等。

需要在docker-compose.yml 配置项目工程依赖环境配置

Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡。

Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

Compose 中有两个重要的概念:

服务 (service) :一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。

项目 (project) :由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

一个项目可以由多个服务(容器)关联而成,Compose 面向项目进行管理,通过子命令对项目中的一组容器进行便捷地生命周期管理。

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

Docker-Compose分成三层

1.项目层 springboot项目依赖于我们的mysql redis、nginx等 一个项目是由多个容器组成的。

2.服务层  运行一个镜像的实例 ---

Compose环境安装(离线安装)

  1. 访问docker compose  github 官网
  2. docker-compose-Linux-x86_64 上传到服务器中,然后执行如下命令将其移动到/usr/local/bin/目录中 并且更名为docker-compose

mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

  1. 执行如下命令:添加可执行的权限

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

  1. 验证docker-compose

docker-compose -v

Compose常用命令

docker-compose -h                           # 查看帮助

docker-compose up                           # 创建并运行所有容器

docker-compose up -d                        # 创建并后台运行所有容器

docker-compose -f docker-compose.yml up -d  # 指定模板

docker-compose down                         # 停止并删除容器、网络、卷、镜像。

docker-compose logs       # 查看容器输出日志

docker-compose pull       # 拉取依赖镜像

dokcer-compose config     # 检查配置

dokcer-compose config -q  # 检查配置,有问题才有输出

docker-compose restart   # 重启服务

docker-compose start     # 启动服务

docker-compose stop      # 停止服务

Compose入门案例

流程:

  1. 需要定义一个docker-compose.yml文件----工程
  2. 需要在docker-compose文件配置依赖服务
  3. docker-compose up 执行该文件

  1. 创建一个docker-compose.yml
  2. 定制docker-compose 内容;
  3. 运行 docker-compose up

version: '3.0'services:tomcat: ##服务名称image: tomcat:8 #镜像文件名称ports:- 8080:8080

Compose模板文件

version: '3.0'services:tomcat80: ##服务名称#container_name: tomcat8080 指定容器名称image: tomcat:8 #镜像文件名称 run imagesports###端口号的映射 -p- 8080:8080volumes: ## 数据源 宿主机与容器数据共享  -v- /usr/tomcat/webapps:/usr/local/tomcat/webappsnetworks###定义网络的桥- tcftomcat81: ##服务名称#container_name: tomcat8080 指定容器名称image: tomcat:8 #镜像文件名称ports###端口号的映射- 8081:8080volumes: ## 数据源 宿主机与容器数据共享- /usr/tomcat/webapps:/usr/local/tomcat/webappsnetworks:- tcfnetworks## 定义服务的桥tcf:


Compose常用命令

docker-compose ps  列出项目中所有的容器

docker-compose stop 停止docker-compose

docker-compose logs  查看容器中日志信息

docker-compose pull  拉取服务依赖的镜像

Compose常用配置

Image 镜像名称;

Build 根据docker file 打包 成镜像;

Context  指定docker file文件位置;

Commond 使用command可以覆盖容器启动后默认执行的命令;

Container_name 容器名称;

depends_on 指定依赖那个服务;

Ports 映射的端口号;

extra_hosts 会在/etc/hosts文件中添加一些记录;

Volumes 持久化目录;

volumes_from 从另外一个容器挂在数据卷;

Dns 设置dns

Compose部署springboot项目

定义Compose文件
version: "3.0"services:mysql: # mysql服务image: mysql:5.7command: --default-authentication-plugin=mysql_native_password #解决外部无法访问ports:- "3306:3306"      #容器端口映射到宿主机的端口environment:MYSQL_ROOT_PASSWORD: 'root'MYSQL_ALLOW_EMPTY_PASSWORD: 'no'MYSQL_DATABASE: 'tcf'MYSQL_USER: 'tcf'MYSQL_PASSWORD: 'tcf'networks:- tcf_webtcf-web: #自己单独的springboot项目hostname: tcfbuild: ./     #需要构建的Dockerfile文件ports:- "38000:8080"      #容器端口映射到宿主机的端口depends_on:      #web服务依赖mysql服务,要等mysql服务先启动- mysqlnetworks:- tcf_webnetworks## 定义服务的桥tcf_web:

Spring项目配置
spring:profiles:active: prddatasource:url: jdbc:mysql://mysql:3306/tcf?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTCusername: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driverserver:###端口号port: 8080servlet:##设置springboot项目访问路径context-path: /tcf

Docker可视化工具使用

Portainer

Portainer是一款Docker可视化管理工具,允许我们在网页中方便的查看和管理Docker容器。

要使用Portainer很简单,运行下面两条命令即可。这些命令会创建一个Portainer专用的卷,然后在8000和9000端口创建容器并运行。

启动:

docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

CentOS Docker 安装

docker rm $(docker ps -aq)

docker stop $(docker ps -q) & docker rm $(docker ps -aq) ---删除所有的容器

docker rmi $(docker images -q)

docker network ls

Linux关闭防火墙命令

systemctl stop firewalld

本文部分素材转载自蚂蚁课堂

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

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

相关文章

【Godot4.2】任意多边形或折线围绕任意点旋转

概述 在很多绘图软件中,都会有对于任意图形围绕给定的旋转中心旋转的基本操作。本节就基于Godot实现任意多边形(Polygon)或折线(Polyline)绕任意旋转中心(在图形内或外都可以)进行旋转。 基本…

linux 16进制写入

1.简单用法[推荐] echo 001122334455 | xxd -r -ps > test // 6 个字节xxd // xxd 命令用于用二进制或十六进制显示文件的内容 -r // 把xxd的十六进制输出内容转换回原文件的二进制内容 -ps // 以 postscript的连续十六进制转储输出,这也叫做纯十六进…

【Unity】CatlikeCoding SRP

Unity 自定义渲染管线 提示:基于CatlikeCoding SRP系列教程学习 学习链接:SRP 个人测试: Demo 相关记录以后有时间再更:

Acwing-基础算法课笔记之动态规划(线性DP)

Acwing-基础算法课笔记之动态规划(线性DP) 一、数字三角形1、概述2、闫氏dp分析法代码示例 二、最长上升子序列1、概述2、闫氏dp分析法3、过程模拟4、代码演示 三、最长上升子序列强化版1、概述2、代码示例 四、最长公共子序列(LCS&#xff0…

[NCNN学习笔记]-0

1、前言 经过前面对NEON基础的学习,对NEON有了一定的了解, 现在正准备逐步开始学习NCNN,关于NCNN的入门介绍可以参考如下链接。 2 、学习NCNN 下面会逐步学习NCNN中src/layer/arm 文件夹中关于NEON的代码,只提取部分关于NEON的…

JS01-JavaScript基础

JavaScript基础 引入js方式 直接使用 <script>alert("Hello javascript!") </script>引入外部文件 <script src"../js/01.js"></script>数组 let name [甘雨,申鹤,钟离] console.log(name) console.log(name[0])数字类型 let a…

你开发的系统国际化了吗?

亲爱的朋友们&#xff0c;周一好&#xff0c;新的一周&#xff0c;精神满满。 在开发Spring Boot应用时&#xff0c;接口的参数校验是一个重要的环节&#xff0c;它确保了数据的完整性和准确性。而国际化处理则使得应用能够支持多种语言&#xff0c;提升了用户体验。 一、参数…

ev多域名ssl证书2000元一年送一月

多域名SSL证书是一种特殊的数字证书产品。多域名SSL证书可以同时保护多个独立的域名站点&#xff0c;这些域名站点可以是多个主域名、子域名&#xff0c;多域名SSL证书可以为它们提供传输数据加密服务以及身份认证服务。EV多域名SSL证书具有更高的安全性&#xff0c;所以一些金…

蓝桥集训之母亲的牛奶

蓝桥集训之母亲的牛奶 核心思想&#xff1a; 暴搜 bfs/dfs bfs: 将每种情况搜索一遍 #include <cstdio>#include <algorithm>#include <cstring>#include <iostream>using namespace std;const int N 21;int A,B,C;struct Node{int a,b,c;}q[N*N*…

深入了解主播美颜技术:从美颜SDK到实时美颜算法

在当今数字化时代&#xff0c;直播行业蓬勃发展&#xff0c;成为了人们日常生活中不可或缺的一部分。而在直播中&#xff0c;主播的形象对于吸引观众、提升观看体验至关重要。为了呈现更加美好的形象&#xff0c;主播们常常会借助美颜技术。从最初的美颜SDK到如今的实时美颜算法…

PS学习-对象选择抠图,覆盖

之前使用通道抠图抠大树 对象 选择 ctrlj 水平居中 选区羽化 选择加选按住shift&#xff0c;减选按住alt 单个选择按住shift是变正方形&#xff0c;或者椭圆变成圆 覆盖 想把天空都变成白色 选区羽化ctrlj 复制粘贴几个往上放 复制了十来个&#xff0c;遮住就行 首先存储为PS…

二叉搜索树题目:将有序链表转换为二叉搜索树

文章目录 题目标题和出处难度题目描述要求示例数据范围 前言解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;将有序链表转换为二叉搜索树 出处&#xff1a;109. 将有序链表转换为二叉搜索树 难度 5 级 题目描述 要求 …

SPA单页面有哪些优缺点

单页面应用&#xff08;SPA&#xff09;作为一种现代化的Web应用程序架构&#xff0c;在当今互联网时代越来越受到开发者和用户的欢迎。它通过在加载应用程序时只加载一次页面&#xff0c;实现页面内容的动态更新&#xff0c;带来了许多优势和挑战。本文将深入探讨SPA的优点和缺…

【数据库】MySQL表的增删改查

文章目录 一、CRUD二、2. 新增&#xff08;Create&#xff09; 一、CRUD 注释&#xff1a;在SQL中可以使用“–空格描述”来表示注释说明 CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写 二、2. 新增&#xff08;Create&#xff09; …

【kaggle竞赛】从手写图像数据集中正确识别数字

1. 题目&#xff1a; 在本次比赛中&#xff0c;您的目标是从数以万计的手写图像数据集中正确识别数字。 1.1. Goal 目标✨ 本次比赛的目标是拍摄手写个位数的图像&#xff0c;并确定该数字是什么。 对于测试集中的每个标签&#xff0c;您都应该预测正确的标签。 本次比赛的…

SpringCloudLoadBalancer入门与实战系列

目录 一、什么是LoadBalancer&#xff1f; 1.1 负载均衡的分类 1.2 负载均衡策略 二、 为什么要学习 Spring Cloud Balancer &#xff1f; 三、 Spring Cloud LoadBalancer 内置的两种负载均衡策略 3.1 轮询负载均衡策略&#xff08;默认的&#xff09; 3.2 随机负载均衡…

科研学习|研究方法——案例研究方法

目录 1.案例研究的起源 2.案例研究的说服力 2.1 外界质疑 2.1.1 样本数量太小 2.1.2 选择的样本带有偏倚 2.1.3 选择的案例太少 2.1.4 无法验证 2.2 重要作用 2.2.1 激发研究 2.2.2 启发灵感 2.2.3 提供佐证 3.案例研究的内容 4.案例研究质量的评价 5.案例研究的优缺点 6.MI…

wsl or 虚拟机 安装

1.wsl2安装 WSL全称Windows Subsystem for Linux&#xff0c;是微软开发的适用于Linux的Windows子系统 如今已经有两代了&#xff1a; 所以用的多的还是wsl2。 安装前需要先去设置启用或关闭Windows功能&#xff1a; 打开适用于linux的子系统和虚拟机平台。 Microsoft Store里…

【实验01 扩展实验】C#桌面项目:简易计算器

【实验要求】 &#xff08;1&#xff09;新建一个C#桌面项目Calc&#xff0c;实现简易计算器功能&#xff0c;界面如图1所示。 &#xff08;2&#xff09;计算方式&#xff1a;通过点击对应的按钮&#xff0c;输入第1个数&#xff08;可以是整数或实数&#xff09;&#xff0c…

微服务:高并发带来的问题的容错方案

1.相关脚本&#xff08;陈天狼&#xff09; 启动nacos客户端&#xff1a; startup.cmd -m standalone 启动sentinel控制台&#xff1a; # 直接使⽤jar命令启动项⽬(控制台本身是⼀个SpringBoot项⽬) java -Dserver.port8080 -Dcsp.sentinel.dashboard.serverlocalhost:808…