(第六章)专注编排与部署

2024-06-08 06:48
文章标签 部署 编排 第六章 专注

本文主要是介绍(第六章)专注编排与部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1.编排与部署
    • 2.Compose原理:仅用一张图就可以解释

1.编排与部署

  • 如何批量创建、段哦都和管理容器成了制约Docker技术在任何组织内大规模应用的主要障碍,蔻带解决的正式容器的编排与部署问题

  • Docker优点:提供了一种全新的软件发布机制。
    开发者使用Docker镜像作为统一的软件制品载体;
    使用Docker容器提供独立的软件运行上下文环境;
    使用Docker Hub提供镜像统一操作;
    使用Dockerfile定义定义使用者在容器中需要进行的操作,还能定义容器中运行软件需要的配置,即:软件开发和运维能够在一个配置文件上达成统一

  • Dockerfile重现一个容器,Compose重现容器的配置和集群

  • 编排:将部署对象,部署流程,以及部署所需的依赖文件,存储位置都在编排工具中以指定的格式(eg:配置文件或者特定的代码)保存起来,能够在全新的环境中可靠有序地重现出来。

  • 部署:指的是按照编排所指定的内容和流程,在目标机器上执行编排指定的环境初始化,存访指定的依赖和文件,运行指定的部署动作,最终按照编排中的规则来确认部署是否成功。

  • Fig/Compose的eg
    (1)Fig是面向Docker容器集群做的编排部署的唯一工具
    (2)Fig被Docker官方改名为Compose
    (3)使用Fig/Compose实现上述编排与部署的eg

1)Compose的安装
curl -L https://github.com/docker/compose/releases/download/1.6.0/docker-compose-`uname -s`-``uname -m` > /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose(2)在Docker宿主机上,创建工作目录和应用
mkdir composetest & composetest在该目录下,创建一个app.py,基于Flask的Web轻应用
from flask import Flask
from flask import Redis
import os
app=Flask(__name__)
redis=Redis(host='redis',port=6379) @app.route('/') ##访问跟目录
def hello():redis.incr('hits')##返回一个从Redis里读取的值,该值通过自加来统计访问次数return 'Hello World! I have been seen %s times.' %redis.get('hits')if __name__="__main__"app.run(host="0.0.0.0",debug=True)##Web容器在0.0.0.0上监听默认端口500并启动3)在requirements.txt中指定Python依赖包:flask和redis(4)定义运行这个应用的Docker容器,Dockerfile如下:
FROM python:2.7    ##安装依赖
ADD . /code			## 添加工作目录
WORKDIR /code
RUN pip install -r requirements.txt(5)一个docker-conmpose.yml来定义这个工作集群,编排部署的核心:
web:build: .command: python app.pyports:-"5000:5000"volumes:- .:/codelinks:- redis
redis:image:redis在该YAML文件里,可以看到两个key:web和redis,意味着用Compose定义了由两个“服务”组成的Docker集群(6)执行:docker-compose up,在容器的Python Web服务中可以看到统计的访问次数
说明:
(1)第一个服务叫web,他从当前目录的Dockerfile build得到;
在容器中运行python app.py;
把容器内的5000端口映射到主机的5000端口;
挂载执行这些操作所在的目录到/code目录下;
代码的修改会直接在容器中体现(2)redis直接使用已有的redis镜像,Dockerfile不必另外写。

2.Compose原理:仅用一张图就可以解释

  • 如下图6-1,以docker-compose up为例
    (1)docker-compose像是docker client增加,它为docker client引入了组的概念
    (2)图中右上角的docker-compose定义了一组服务来组成一个docker-compose的project

在这里插入图片描述

调用过程如下:
(1)首先,用户执行dcker-compose up指令调用了命令行中的启动方法。
即:一个docker-compose.yml定义了一个docker-compose 的project,该指令提供的命令行参数则作为project的启动参数,交给
peoject去处理(2)若当前宿主机已经存在与该应用对应的容器,docker-compose将进行行为逻辑的判断(3)启动容器,完成一个Docker容器启动所需的主要参数的封装,并在container模块执行启动(4)container模块会调用docker-py客户端来执行,向Docker daemon发起创建容器的POST请求
  • 当使用Docker构建服务栈时,容器间的关系,尤其是link和volumes-from这两个参数是最为常用的。
    (1)一旦需要更新或重启容器,就必须在容器启动参数里添加这2个参数,并且以正确的顺序来执行docker run,才能保证新的集群可以正常工作。
    (2)在Compose中,link和volumes-from是在docker-compose.yml中是配置的,一旦在docker-compose up中发现了需要重新创建容器的情况,Compose就会依据容器之间的关系来进行更新操作,保证更新后的容器依然是正常连接的
    (3)删除并创建一个同名的容器是否能更新原先的link信息?
    link原理:若存在web->redis这样的link关系,web容器里的hosts文件只有在redis容器重启的情况下才会被更新,而更新并重新创建一个同名redis容器,原web容器黎的hosts文件记录的还是一个旧的IP地址。
    Compose解决办法:在Compose的数据结构中,对于重新创建的容器,都会按照project里所有容器的link关系的排序依次进行。即:更新(重启)redis容器会连带更新link它的web容器。
    (4)对于volume以及volume-from参数的问题:容器重建操作事实上,就是创建并重新创建一个同名容器,但是如果该容器包含volume,甚至该volume还被其它容器通过volume-from所引用,此时删除新建的同名容器肯恩可能不具有旧容器的volume内容,还会间接导致引用它的其它容器volume内容丢失(docker-compose会按照拓扑关系重新引用新容器的volume)
    Compose解决办法:docker-compose中使用了中间容器intermediate container来暂时记录旧的容器,如图6-2所示
    在这里插入图片描述
6-2的解释:
(1)中间容器先引用旧容器的volume,然后才删除旧容器
即:docker rm只删除容器,旧容器volume里的内容是保留的。(2)当重新创建新容器之后,新建容器就可以通过引用中间容器获得旧容器volume的内容
  • 编排工具Compose直接在docker-compose代码基础上进行重构和再开发,使用Docker标准API,缺点:
    (1)仅在编排,没有部署
    (2)面向单机部署
    (3)Docker不能提供跨主机的网络

这篇关于(第六章)专注编排与部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1041451

相关文章

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Jenkins中自动化部署Spring Boot项目的全过程

《Jenkins中自动化部署SpringBoot项目的全过程》:本文主要介绍如何使用Jenkins从Git仓库拉取SpringBoot项目并进行自动化部署,通过配置Jenkins任务,实现项目的... 目录准备工作启动 Jenkins配置 Jenkins创建及配置任务源码管理构建触发器构建构建后操作构建任务

若依部署Nginx和Tomcat全过程

《若依部署Nginx和Tomcat全过程》文章总结了两种部署方法:Nginx部署和Tomcat部署,Nginx部署包括打包、将dist文件拉到指定目录、配置nginx.conf等步骤,Tomcat部署... 目录Nginx部署后端部署Tomcat部署出现问题:点击刷新404总结Nginx部署第一步:打包

Nginx、Tomcat等项目部署问题以及解决流程

《Nginx、Tomcat等项目部署问题以及解决流程》本文总结了项目部署中常见的four类问题及其解决方法:Nginx未按预期显示结果、端口未开启、日志分析的重要性以及开发环境与生产环境运行结果不一致... 目录前言1. Nginx部署后未按预期显示结果1.1 查看Nginx的启动情况1.2 解决启动失败的

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起

Solr部署如何启动

Solr部署如何启动 Posted on 一月 10, 2013 in:  Solr入门 | 评论关闭 我刚接触solr,我要怎么启动,这是群里的朋友问得比较多的问题, solr最新版本下载地址: http://www.apache.org/dyn/closer.cgi/lucene/solr/ 1、准备环境 建立一个solr目录,把solr压缩包example目录下的内容复制