精华内容
下载资源
问答
  • 如果您有任何疑问,请发送电子邮件至或在课程电报组中发送消息。
  • devopsdocker 即使关于如何做到“正确”的公认标准仍然难以捉摸,... 在他在LinuxFest Northwest 2016上的两次演讲之前,我有机会他交谈: Git和Docker中的 可怕想法 必定消亡:Docker教会中的异端 。 请继...

    devops和docker

    即使关于如何做到“正确”的公认标准仍然难以捉摸,DevOps还是现代IT的关键要素。 FutureAdvisor的DevOps主管Corey Quinn在运营和DevOps方面拥有丰富的经验。 在他在LinuxFest Northwest 2016上的两次演讲之前,我有机会与他交谈: GitDocker中的 可怕想法 必定消亡:Docker教会中的异端

    请继续阅读,进行有见地的聊天,在其中我们对DevOps,Git,Docker和开源进行主题讨论,并带有一点Corey的幽默感。

    DevOps是一个热门且有时令人困惑的话题。 您如何定义它? 这对您意味着什么?

    五年前,“ DevOps”一词使您可以要求10个人定义该词并获得12个不同的答案。 如今,这并没有真正改变-如果有的话,您将获得15个答案,从理想的(“帮助打破文化筒仓”)到描述性的(“文化与工具的结合”)到愤世嫉俗的( “一种通过简单更改标题即可为您的工资增加3万美元的方法”)。 今天,我将继续:DevOps是启动语义参数的好方法。

    您能举一个正确完成DevOps的例子吗? 使用了哪些工具?

    很难再说:“这家公司确实钉住了DevOps,所以其他所有人都应该完全照做。” 那不是DevOps文化。 那是货物的培养 ,我们一直在看到这样的例子。 我所看到的最好的例子是那些意识到自己的20人工程团队不是Google数以万计的工程师的公司,或者那些在Facebook上真正行之有效的事情并没有映射到他们今天正在从事的工作。 因此,他们充分利用了其他商店的优势,并将其打造成独特的商店。 我希望我可以说存在“ DevOps in a Box”的存在-我很乐意将其出售给您!-但事实并非如此。

    告诉我们我们不应该如何进行DevOps。 你有最喜欢的恐怖故事吗?

    我所遇到的对DevOps文化的最严重的误解是一家商店,预计人们会花一半的时间从事运营任务,而另一半的时间则用于公司核心应用程序的开发。 那不是DevOps。 那是两个不同的工作。 毫不奇怪,团队中的每个人都至少失败了其中之一。

    您现在看到什么趋势,尤其是在云和容器化的情况下?

    不变的基础设施的兴起是一个共同的主题,但我更倾向于将其视为短暂的基础设施:根据设计,现在存在的事物不会在10分钟之内消失。 您如何在不不断关闭传呼机的情况下进行监控? 您如何诊断间歇性问题,该问题最后一次发生在容器中,该容器在问题出现在雷达上时已被重新安排到另一个节点? 容器和云要求我们重新思考比使用的交付技术更多的东西。 他们迫使我们重新思考我们如何看待环境以及我们关心的是什么。

    您已经说过,Git在DevOps工具中越来越重要。 是什么使它变得至关重要?

    如果没有其他原因,Git很重要,因为它是当前大多数商店中版本控制的事实上的标准。 版本控制的更大范围很重要,因为它直接表明了“基础结构即代码”的思维方式。 在更改某项内容之前先了解代码的样子,确定更改某项内容的时间和原因,并提供异步工作流模型-所有这些对于我们作为操作人员比手动配置服务器或交换机做得多的世界来说至关重要。 我将走得更远:如果没有Git或类似的工具,对于大多数环境,从功能上讲,不可能以任何合理的方式扩展到一千个节点。

    您发现哪些Git集成工具有用?

    当您说“ Git工具”时,我想到的是有助于减轻Git恐惧感的事物。 为此,Joey Hess的myrepos非常擅长简化大量Git 仓库的管理和更新。 Githug (Ruby的宝石)非常擅长教授Git如何应对有趣的挑战。 当然,对于大多数自动生成的结果, Random Git手册页生成器似乎很合理。 Git是一种非常简单的工具,很快就让位于可怕的复杂性。

    在您的演讲中, Docker必须死:Docker教堂中的异端邪说 ,为什么您说保持谨慎很重要?

    在本行业中,有一种令人不安的倾向,就是抛弃经时间考验的工具,以支持本周的闪亮新玩具。 确保您针对自己的用例而不是其他人的用例进行优化非常重要。 如果您最终想解决一些问题,而当您自己稍微接近20个节点时,问题便会扩展到200,000个节点,那么您可能已经失去了情节。 我演讲的重点不是说Docker是一种可怕的技术,而是事实。 但是,重要的是要对基础架构中发生的事情,其工作方式以及失败之前遇到的情况有一个了解。

    您最推荐的三种容器最佳做法是什么?

    我的第一个最佳实践是不要使用容器。 当您回来说:“太荒谬了!由于X,Y和Z的原因,这是对我们用例的最佳解决方案”,您很有可能已经对此进行了充分的思考,以至于您不会盲目地跳流行起来。 请记住,最佳做法并不适用于所有情况!

    我的第二个最佳实践是确保每个人都全面了解您的新体系结构。 当开发人员为您提供3TB的容器(因为它包含数据库的完整副本)时,在某处出现了通信错误。

    我的第三个最佳实践是考虑容器化将对当前环境产生的影响。 在迁移到更不变的模型时,我们在早期发现的发现是,我们的许多无状态实例并不像我们认为的那样几乎没有状态。 硬编码的IP地址,写出的日志文件,“特殊”主机运行着被遗忘的特定任务-在传统环境中堆积了很多杂物。

    作为SaltStack的贡献者,Salt在诸如Docker之类的容器化技术之间有何关联?

    这是一个很好的问题! 我们将搁置这样一个事实,即Kubernetes(一种流行的容器调度程序)是建立在SaltStack之上的,而是在配置管理的背景下讨论不可变的基础架构。 即使在您所有基础架构都不可变的世界中,业务流程协调仍然是一个未解决的问题。 此外,只有极少数的商店符合该定义的资格-几乎每个人都在纯配置管理和纯金色映像之间徘徊。 您很有可能在您的环境中至少有一些短暂的或不可变的节点。

    翻译自: https://opensource.com/business/16/4/linuxfest-northwest-interview-corey-quinn

    devops和docker

    展开全文
  • devops-Docker学习

    2020-03-02 21:00:26
    DevOps是提高软件开发、测试、运维、运营 等各部门的沟通协作质量的方法和过程,DevOps强调软件开发人员软件测试、软件运维、质量保障(QA)部 门之间有效的沟通协作,强调通过自动化的方法去管理软件变更、...

    devops简介

    DevOps是Development和Operations两个词的缩写,引用百度百科的定义:

    DevOps是一种方法或理念,它涵盖开发、测试、运维的整个过程。

    DevOps是提高软件开发、测试、运维、运营 等各部门的沟通与协作质量的方法和过程,DevOps强调软件开发人员与软件测试、软件运维、质量保障(QA)部 门之间有效的沟通与协作,强调通过自动化的方法去管理软件变更、软件集成,使软件从构建到测试、发布更加快捷、可靠,最终按时交付软件。
    在这工程中会使用到一堆的工具,比如git,maven,docker,Jenkins等
    最终达到提升开发,测试,运维的效果.

    img

    开发即运维-开发可以做运维事情,开发出来的东西就是要快速部署东西

    img

    使用一系列工具完成自动处理,达到开发出来就是要拿去部署.解决开发环境和部署的环境不一致而导致反复部署过程.虽然增加了开发人员工作量,对整个公司有好处,提高了运维效率,降低了公司成本.

    Docker简介

    学习Docker我们需要 先了解虚拟化

    虚拟化

    在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。

    在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件 对资源充分利用

    虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等等。

    Docker是什么

    img
    容器化虚拟技术,和vm相比一个天上一个地下.
    集装箱的思想. 安装自行车–直接装好发给你

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

    容器与虚拟机比较

    1)本质上的区别-共享操作系统

    不需要安装额外操作系统

    2)使用上的区别-虚拟机已死,容器才是未来。

    img

    Docker特点

    1)上手快。只需要几分钟,就可以把自己的程序“Docker化”。可以说达到“随心所致,代码即改”的境界

    2)职责的逻辑分类。 Docker设计的目的就是要加强开发人员写代码的开发环境与应用程序要部署的生产环境一致性。

    3)快速高效的开发生命周期。Docker的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应用程序具备可移植性,易于构建,并易于协作。

    4)鼓励使用面向服务的架构。 Docker还鼓励面向服务的体系结构和微服务架构。

    Docker组件

    img
    Docker镜像-模板

    镜像是构建Docker的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周期中的“构建”部分。镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构建出来。

    也可以将镜像当作容器的“源代码”。镜像体积很小,非常“便携”,易于分享、存储和更新。

    Registry(注册中心)-存放镜像

    Docker用Registry来保存用户构建的镜像。Registry分为公共和私有两种。Docker公司运营公共的Registry叫做Docker Hub。用户可以在Docker Hub注册账号,分享并保存自己的镜像(说明:在Docker Hub下载镜像巨慢,可以自己构建私有的Registry)。

    Docker容器-跑镜像

    Docker可以帮助你构建和部署容器,你只需要把自己的应用程序或者服务打包放进容器即可。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。

    我们可以认为,镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。

    器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务。

    所以Docker容器就是:

    一个镜像格式;

    一些列标准操作;

    一个执行环境。

    Docker安装与启动

    Docker官方建议在Ubuntu中安装,因为Docker是基于Ubuntu发布的,而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的。

    CentOS安装Docker

    使用yum命令在线安装(一定要保证能够ping通外网)

    yum install docker

    安装成功后查看Docker版本

    docker version

    启动与停止Docker

    systemctl命令是系统服务管理器指令,它是 service 和 chkconfig 两个命令组合。

    1. 启动docker:systemctl start docker
    2. 停止docker:systemctl stop docker
    3. 重启docker:systemctl restart docker
    4. 查看docker状态:systemctl status docker
    5. 开机启动:systemctl enable docker
    6. 查看docker概要信息:docker info
    7. 查看docker帮助文档:docker --help

    Docker镜像操作

    什么是Docker镜像

    Docker镜像是由文件系统叠加而成(是一种文件的存储形式)。最底端是一个文件引导系统,即bootfs,这很像典型的Linux/Unix的引导文件系统。Docker用户几乎永远不会和引导系统有什么交互。实际上,当一个容器启动后,它将会被移动到内存中,而引导文件系统则会被卸载,以留出更多的内存供磁盘镜像使用。Docker容器启动是需要的一些文件,而这些文件就可以称为Docker镜像。

    镜像就相当于操作系统iso文件,可以安装多个操作系统. 一个镜像可以启动多个容器

    操作镜像

    1)列出docker下的所有镜像:docker images

    1. REPOSITORY:镜像所在的仓库名称
    2. TAG:镜像标签
    3. IMAGE ID:镜像ID
    4. CREATED:镜像的创建日期(不是获取该镜像的日期)
    5. SIZE:镜像大小

    这些镜像都是存储在Docker宿主机的/var/lib/docker目录下

    2)搜索镜像:docker search 镜像名称

    1. NAME:仓库名称
    2. DESCRIPTION:镜像描述
    3. STARS:用户评价,反应一个镜像的受欢迎程度
    4. OFFICIAL:是否官方

    AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的63.4拉取镜像

    3)拉取镜像:

    使用命令拉取:docker pull centos:7

    阿里镜像加速器

    img

    4)删除镜像

    1. 删除指定镜像:docker rmi $IMAGE_ID
    2. 删除所有镜像:docker rmi docker images -q

    Docker容器操作

    1)查看容器

    1. 查看正在运行容器:docker ps
    2. 查看所有的容器(启动过的历史容器):docker ps –a 高版本才支持
    3. 查看最后一次运行的容器:docker ps –l
    4. 查看停止的容器:docker ps -f status=exited

    2)创建与启动容器

    1. 创建容器常用的参数说明:
    2. 创建容器命令:docker run
    3. -i:表示运行容器
    4. -t:表示容器启动后会进入容器命令行(交互式)。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
    5. –name :为创建的容器命名。
    6. -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
    7. -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
    8. -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

    3)停止与启动容器

    1. 停止正在运行的容器:docker stop $CONTAINER_NAME/ID
    2. 启动已运行过的容器:docker start $CONTAINER_NAME/ID

    4)文件拷贝

    ​ 1.如果我们需要将文件拷贝到容器内可以使用cp命令

    docker cp 需要拷贝的文件或目录 容器名称:容器目录

    ​ 2.也可以将文件从容器内拷贝出来

    docker cp 容器名称:容器目录 需要拷贝的文件或目录

    5)目录挂载

    我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。

    创建容器 添加-v参数 后边为 宿主机目录:容器目录

    docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos2 centos:7

    如果你共享的是多级的目录,可能会出现权限不足的提示。
    img
    这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题

    6)查看容器IP地址

    1.通过以下命令查看容器运行的各种数据

    docker inspect mycentos2

    2.也可以直接执行下面的命令直接输出IP地址

    docker inspect --format=’{{.NetworkSettings.IPAddress}}’ mycentos2

    7)删除容器

    1. 删除指定的容器( 注意,只能删除停止的容器):docker rm $CONTAINER_ID/NAME
    2. 删除所有容器:docker rm docker ps -a -q

    交互式容器

    创建一个交互式容器并取名为mycentos

    docker run -it --name=mycentos centos:7 /bin/bash

    这时我们通过ps命令查看,发现可以看到启动的容器,状态为启动状态

    img
    使用exit命令 退出当前容器
    img
    然后用ps -a 命令查看发现该容器也随之停止:
    img
    退出容器马上停止.

    启动容器执行容器中的shell:

    … /bin/bash -c ‘java -jar /usr/local/java/demo-0.0.1-SNAPSHOT.jar’

    守护式容器

    创建一个守护式容器:如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(容器名称不能重复):

    docker run -di --name=mycentos2 centos:7

    登录守护式容器方式:

    docker exec -it container_name (或者 container_id) /bin/bash(exit退出时,容器不会停止)

    img
    进去以后出来不会关闭
    命令如下(容器名称不能重复):
    docker run -di --name=mycentos2 centos:7

    登录守护式容器方式:
    docker exec -it container_name (或者 container_id) /bin/bash(exit退出时,容器不会停止)
    img
    进去以后出来不会关闭

    展开全文
  • 识别二维码报名活动8月19日,来自微软、数人云、京东、当当网的四位IT老兵,《一起吹响Container+集结号》,看Serverless、DevOps、微服务、CI/CD、分布式调度任务等技术,在各个场景中Container发生的碰撞交互...

    Markdown

    识别二维码报名活动

    8月19日,来自微软、数人云、京东、当当网的四位IT老兵,《一起吹响Container+集结号》,看Serverless、DevOps、微服务、CI/CD、分布式调度任务等技术,在各个场景中与Container发生的碰撞与交互。

    数人云:DevOps&Docker已经逐步完成布道阶段,在越来越多的场景中应用并且获得显著的效果,本文将阐述了两者结合在一起的优势以及相关实践。

    Docker通过模块化、平台独立性、高效资源利用和快速安装,颠覆了原有的应用部署交付等方法,帮助DevOps更好地落地,两者结合的优势有:

    • 快速交付
    • 实时更新应用
    • 版本可靠
    • 提高质量
    • 敏捷环境

    什么是DevOps

    敏捷开发基于适应性应用开发、持续改进、持续交付,因此DevOps的目标是在应用交付的各个团队之间建立协作,并使应用交付过程自动化,从而不断地测试、部署和监控新发布的版本。

    DevOps将开发和运维协调在一起,寻求自动化过程以保证应用的质量,通过DevOps模式,Docker可以构建从GitHub代码仓库到应用部署的一个持续交付的通道,从GitHub代码仓库到应用部署。

    DevOps如何结合Docker

    Docker容器通过镜像运行,可以在本地或者存储库(如Docker Hub)上使用,假设作为一个用例,MySQL数据库或其他数据库提供的新版本经常使用小BUG或补丁进行修复,如何在没有延迟的情况下为终端用户提供新版本?

    Docker镜像与代码存储库相关联——一个GitHub代码仓库或其他一些存储库,如AWS coUNK mit,若开发人员从GitHub代码仓库构建Docker镜像,并使其在Docker Hub到最终用户,如果最终用户将Docker镜像部署为容器,那么会有以下几个单独运行的阶段:

    1)将GitHub代码仓库构建到Docker镜像中(使用Docker构建命令)

    2)测试Docker镜像(使用Docker run命令)

    3)上传Docker镜像到Docker
    Hub(使用Docker推送命令)

    4)终端用户下载Docker镜像(使用Docker pull命令)

    5)终端用户运行一个Docker容器(使用Docker run命令)

    6)终端用户部署一个应用(如,使用AWS弹性Beanstalk)

    7)终端用户监控应用

    Markdown

    当新的MySQL数据库在短时间内(可能仅仅一天),出现新的BUG,需要将过程重复。

    但DevOps模式可以用于Docker镜像从GitHub到部署,且不需要用户或管理员进行干预。

    DevOps的设计模式

    DevOps的设计模式以持续集成、持续测试、持续交付和持续部署为中心,自动化、协作和持续监控是DevOps中使用的一些其他设计模式。

    【持续集成】

    持续集成是不断地将源代码集成到一个新的构建或发布的过程,源代码可以在本地存储中,也可以在GitHub或AWS CodeCommit中。

    【持续测试】

    连续测试新的构建或发布即持续测试,Jenkins之类的工具为持续测试提供了几个特性:在Jenkins的每个阶段都有用户去输入,它提供了一些插件,如Docker构建步骤插件,分别测试每个Docker应用阶段:运行容器、上传镜像、停止容器。

    【持续交付】

    持续交付为终端用户提供新的构建,以便在生产中部署,对于Docker应用,持续交付包括在Docker Hub或Amazon EC2容器等存储库中提供Docker镜像的每个新版本/标记。

    【持续部署】

    持续部署是不断地部署Docker镜像的最新版本,每当一个Docker镜像的新版本/标签可用时,Docker镜像就会被部署到生产环境中,Kubernetes 容器管理器已经提供了一些功能,如滚动更新,无需中断即可将Docker镜像升级到最新的服务,Jenkins滚动更新是自动化的,当Docker镜像的新版本/标签可用时,就会不断更新。

    【持续监控】

    持续监控可以监控正在运行应用的过程,类似于Sematext可以监控Docker应用,部署Sematext Docker代理来监控Kubernetes的集群指标并收集日志。

    【自动化】

    对于Docker应用,可以自动安装一些如Kubernetes这种非常复杂的工具,在其1.4版本中包含了名为Kubeadm的新工具,可以在Ubuntu和CentOS上自动安装Kubernetes上,但CoreOS上不支持Kubeadm工具。

    【协作】

    协作涉及到跨团队的工作和资源共享,如不同的开发团队可以在GitHub库中开发Docker镜像的不同版本代码,所有的Docker镜像标签都被构建并不断上传至Docker Hub,Jenkins提供了许多分支渠道项目,用于从GitHub存储库等存储库的多个分支中构建代码。

    DevOps的工具

    Jenkins

    Markdown

    Jenkins是一种常用的自动化和持续交付工具,可用于不断地构建、测试和交付Docker镜像,Jenkins提供了几个可以与Docker一起使用的插件,如Docker插件,Docker构建步骤插件,Amazon EC2插件。
    - 使用Amazon EC2插件,可以使用云配置为Jenkins的代理服务器动态提供实例。
    - Docker插件可以用来配置云,在Docker容器中运行Jenkins项目。
    - Docker构建步骤插件用于测试Docker镜像的各个阶段:构建镜像、运行容器、将镜像Push到 Docker Hub停止并删除Docker。

    CodeCommit & CodeBuild & Elastic Beanstalk

    Markdown

    AWS提供了一些DevOps工具:

    CodeCommit是一个类似于GitHub的版本控制服务,用来存储和管理源代码文件,AWS CodeBuild用于构建和测试代码的DevOps工具,需要构建的代码可以从GitHub或coUNK mit持续集成,从CodeBuild中输出的Docker镜像可以上传到Docker Hub,也可以在构建完成时上传到Amazon EC2容器注册中心。

    CodeBuild提供持续且自动化的过程用于构建、测试、交付阶段。

    Elastic Beanstalk用于在云端部署和扩展Docker应用,提供了自动容量供应、负载均衡、容缩和监控,Beanstalk应用和环境可以从一个打包为ZIP文件的Dockerfile创建,该文件包含其他应用资源,或仅仅来自一个未打包的Dockerfile,或可以在Dockerrun.aws中制定Docker应用的配置,包括Docker镜像和环境变量。Json文件是Dockerrun.aws的例子,列出了多个容器的配置,其中一个用于MySQL数据库,另一个用户Nginx服务器:

    {
      "AWSEBDockerrunVersion": 2,
      "volumes": [
        {
          "name": "mysql-app",
          "host": {
            "sourcePath": "/var/app/current/mysql-app"
          }
        },
        {
          "name": "nginx-proxy-conf",
          "host": {
            "sourcePath": "/var/app/current/proxy/conf.d"
          }
        }
      ],
      "containerDefinitions": [
        {
          "name": "mysql-app",
          "image": "mysql",
          "environment": [
            {
                "name": "MYSQL_ROOT_PASSWORD",
                "value": "mysql"
            },
            {
                "name": "MYSQL_ALLOW_EMPTY_PASSWORD",
                "value": "yes"
            },
            {
                "name": "MYSQL_DATABASE",
                "value": "mysqldb"
            },
            {
                "name": "MYSQL_PASSWORD",
                "value": "mysql"
            }
        ],
          "essential": true,
          "memory": 128,
          "mountPoints": [
            {
              "sourceVolume": "mysql-app",
              "containerPath": "/var/mysql",
              "readOnly": true
            }
          ]
        },
        {
          "name": "nginx-proxy",
          "image": "nginx",
          "essential": true,
          "memory": 128,
          "portMappings": [
            {
              "hostPort": 80,
              "containerPort": 80
            }
          ],
          "links": [
            "mysql-app"
          ],
          "mountPoints": [
            {
              "sourceVolume": "mysql-app",
              "containerPath": "/var/mysql",
              "readOnly": true
            },
            {
              "sourceVolume": "nginx-proxy-conf",
              "containerPath": "/etc/nginx/conf.d",
              "readOnly": true
            }
          ]
        }
      ]
    }

    Beanstalk应用程序部署的监控:
    Markdown

    DevOps&Docker的实践

    Docker Datacenter提供让企业更容易建立内部CaaS环境,有助于企业应用交付。

    Docker Datacenter(DDC)为企业提供了一种方法:可以让开发者轻松地部署应用,而不必担心从开发到生产的过程中产生的问题。

    CaaS平台提供容器和集群编排,通过为DDC构建云端模板,开发者和IT操作人员可以将Dockerzed应用迁移到云端。

    DDC包括Docker Universal Control Plane(UCP)、The Docker Trusted Registry (DTR) , 和The Commercially Supported (CS) Docker Engine 。

    Markdown

    The Universal Control Plane

    UCP是集群管理解决方案,可以安装在本地或虚拟私有云上,UCP公开了标准的Docker API,可以继续使用已知的工具管理集群,如仍然可以使用docker info 命令来查看集群的状态:

    Containers: 15
    Images: 10
    ServerVersion: swarm/1.1.3
    Role: primary
    Strategy: spread
    Filters: health, port, dependency, affinity, constraint
    Nodes: 2
     ucp: <UCP_IP>:<PORT>
       └ Status: Healthy
       └ Containers: 20
     ucp-replica: <UCP_REPLICA>:<PORT>
       └ Status: Healthy
       └ Containers: 10

    使用Docker UCP,仍然可以管理基础设施的节点:应用、容器、网络、镜像等,Docker UCP有内置身份验证机制,支持LDAP和Active Directory及基于角色的访问控制(RBAC),确保只有授权用户能够访问并对集群进行更改。

    Markdown

    UCP是一个容器化的应用,允许管理一组同一Docker集群的节点,UCP的核心组件是名为UCP代理的全局调度服务,运行后将使用其他CUP组件部署容器。

    The Docker Trusted Registry

    安全性是开发者在企业采用Docker所面临的最大挑战之一,认识到这一挑战以及企业需要继续在整个网络中简化安全性,Docker引入了Docker Trusted Registry(DTR)。

    DTR使用的身份验证机制和Docker UCP相同将其内置,还支持RBAC,允许在必要时实现个性化的访问控制策略。

    部署Docker Datacenter

    运行DDC主要有两种选择:部署整个堆栈,包括UCP和DTR在AWS上生成模板,或在Linux服务器上手动操作,在本案例中,将使用Docker CaaS(容器作为服务)提供的第二个选择。

    CaaS选项基本上是一个托管的SaaS解决方案,Docker引擎、UCP和DTR由Docker操作,容器节在服务器上运行,本文将链接到AWS环境作为案例,但其实也可以在本地环境中运行。

    在AWS上部署节点集群

    登录到您的DDC账户(可以注册试用Docer Datacenter版本)并在左侧菜单中寻找云设置选项,如下图所示,包含可以链接的支持公有云应用列表,用于创建和托管节点,可用Docker Datacenter进行管理。

    Markdown

    选择AWS作为提供商,单击Plug-and-Play图表后,会出现对话框,需要进入Role Delegation ARN(请参阅:https://docs.docker.com/docker-cloud/infrastructure/link-aws/

    节点集群设置

    链接到AWS环境后,进行基础设施设置,如下图所示:

    Markdown

    点击创建后,将被重定向到配置页面——会被要求输入集群的配置参数:

    Markdown

    集群名称没有限制,也适用于标签字段,允许提供关于想要创建集群的额外描述。

    建议列表也随后出现,作为提供者,必须选择与自身账户链接的那个,字段本身只需要一个选择,而且不局限于创建托管在不同提供者的节点集群。

    继续选择AWS区域和网络(VPC),如果将VPC默认设置为“Auto”那么所有的集群节点都将部署在一个新的自动创建的VPC中。

    Type/Size字段用于配置每个节点的CPU和RAM数量,IAM角色可以不受影响,并保存默认值“None”剩下要配置的最后两个字段是磁盘大小和节点数量,本文中,设置了10G的磁盘空间并创建了3个节点。

    Markdown

    点击启动节点集群后,将重定向到节点集群概览界面,可以跟踪集群的状态,成功部署节点集群,部署的状态就会出现在节点集群的名称下。

    再次点击启动节点集群,能看到云提供商发生更改,因为已经与Docker Datacenter相连,所有创建的节点都将在那里托管,可以在云平台上用支持的方式进行监控。(参见Logz.io Docker日志收集器用于集中监控Docker环境的方法:https://logz.io/blog/logz-io-docker-log-collector/

    跨节点集群部署服务

    接下来会详细介绍如何跨节点集群部署服务,本文中将使用Nginx:

    Markdown

    点击左侧菜单栏中的“服务”,将显示主视图的服务面板,而后点击右上角的“Create”按钮,将被重定向到部署获取权镜像的方式。

    除了Jumpstart部分和公共镜像,还有一部分可以定义自己的存储库,从中提取镜像,这里将使用公开可用的镜像。

    Markdown

    在搜索Docker Hub区域内的文本框中输入“Nginx”Enter后将看到与之匹配的可用镜像列表,选择第一项。

    单击列表项中的“Select”按钮后,将重定向到Settings页面,部署策略对以下事情非常重要:

    • 跨节点之间的负载均衡
    • 当容器崩溃时的选项:自动重启和自动销毁
    • 终止容器时的策略(此操作实际在终止时会破坏所有数据)
    • 自动重新部署选项:当新镜像被推送或构建时自动重新部署服务

    Markdown

    为其他面板与端口添加运行命令、内存限制和CPU有关限制,本文实例中保留默认值即可。

    而后是Ports部分,可以在这里选择发布哪些端口,并对外部公开(以及哪些不公开),本案例中使用的是80和443。

    Markdown

    接下来配置环境变量、和其他服务的链接,如把API作为单独的服务部署,NGINX服务器将请求重定向到API服务时,这些链接是有用的。

    完成后,可以点击“创建和部署“按钮,将会重定向到服务概览页面,可以看到部署状态,前面步骤中输入的配置概述、容器、链接、环境变量,以及用于访问NGINX服务器的DSN节点等等。

    Markdown

    如果单击节点中提供的链接,则会看到Nginx欢迎页面。
    如前所述,除了连接AWS账户外,还支持内部节点,但都需要安装支持的操作系统,单击“在节点集群中自带节点”按钮,并在服务器中键入命令(在模式窗口内提供),并在数据中心内执行类似节点的操作。

    Markdown

    原文作者:
    Deepak Vohra、Daniel Berman

    原文链接:
    http://logz.io/blog/docker-datacenter
    https://www.toadworld.com/platforms/mysql/b/weblog/archive/2017/01/17/devops-for-docker-a-trend-for-2017

    展开全文
  • 前言本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目).打算用三个篇幅来记录完整的全过程觉得有帮助的朋友~...

    前言

    本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目).

    打算用三个篇幅来记录完整的全过程

    觉得有帮助的朋友~可以左上角点个关注,右下角点个推荐

     

    CI/CD简介

    首先,我们先来简单的介绍一下什么是CI/CD

    CI全拼Continuous Integration 持续集成
    我们的开发每天基本都会提交多次代码到主干上,这个时候如果需要编译或者打包,就会做一些重复性的动作,就可以用持续集成环境来操作。
    有集成了,就肯定少不了它的好基友,没错就是CD。
    CD全拼是Continuous Deployment,是持续部署。
    CD还有个小号,交持续交付,英文全称是Continuous delivery,缩写也是CD。

    CI/CD优点是,重复的工作用自动化来代替、减少时间成本、减少版本发布时间。

     

    Azure DevOps简介

    作为.NET的开发者,微软一直都是比较有爱的..从免费强大的IDE到人工智能ML.NET 基本上都提供了免费的入门版本,今天主要介绍的就是Azure DevOps.

    Azure DevOps的前身其实大家都熟悉就是TFS,Azure DevOps是由TFS转为线上Online的产品.

    它基本上提供了CI/CD所需要的全部功能。唯一的问题是在国内没有服务器,最近的服务器在香港。

    Azure DevOps提供无限免费的私有仓库,以及最多5个contributor(贡献者)账号和无限的stakeholder(参与者)账号,注册即可使用.

    本文的CI/CD概念图

     

     这里的代理服务池和各类服务器 都是采用阿里云的CentOS7.0+系统.

    正文

    1.提交代码到Azure DevOps Repos 

    首先我们创建一个项目(选择使用GIT作为版本控制工具),进入项目中我们可以看到Repos菜单下如图:

     

    其实就是提供了一个GIT的仓库地址,提交代码即可.

    2.创建代理服务器池

    其实这里就直接可以用官方提供的代理服务器来进行CI和CD了,但是会有诸多不便,也不方便自己管理.

    点击菜单最下面的Project Settings,如图:

     

     找到Agent pools

     

    创建一个新的自托管的代理服务器池

      

    3.创建代理服务器

    点进去上一步创建的代理服务器池,找到agent

    创建一个自己的代理服务器

    可以看到微软给我们提供了多种平台版本的代理服务器客户端 这里我们选择linux然后下载复制tar包地址:

     

     

    回到我们自己阿里云服务器.

    (1)安装打包编译需要的支持环境Docker

    CentOS安装Docker我就不详细描述了,百度一大把资料.

    (2)安装代码拉取的工具GIT

    需要注意的是CentOS自带的GIT只有1.8+版本,需要升级到2.0+版本才能连接Azure DevOps

    具体升级方式可以参考:https://blog.csdn.net/qq_28903377/article/details/86148687

    这篇文章的安装目录是/usr/local/git/bin  记得自己的安装目录/usr/local/git/bin

    (3)安装agent代理服务器客户端

    执行命令 创建一个文件夹,并进入这个文件夹

    mkdir myagent && cd myagent

    下载微软提供给我们的agent代理服务器客户端

    wget https://vstsagentpackage.azureedge.net/agent/2.172.2/vsts-agent-linux-x64-2.172.2.tar.gz

     解压

    tar -zxvf vsts-agent-linux-x64-2.172.2.tar.gz

    运行配置代理服务器:

    ./config.sh

    这里可能会出现一些错误提示:Must not run with sudo

    具体的解决方案请参考https://github.com/microsoft/azure-pipelines-agent/pull/1713/commits/15a5beea684fa35172d661f3253b93e210409fbb

    注意:代理服务器是基于.NET CORE3.1编写,所以需要相应的运行环境,如果没有,请运行如下命令:

    ./bin/installdependencies.sh to install

     

    创建自己的访问令牌 (PAT) 进行身份验证(这里一定要操作,后面需要使用)

    点击右上角选择access Token

     

    创建一个新的令牌

     

     

    这里为了方便,我直接选择了Full access授权这个Token可以访问所有的内容.

    然后会得到一个Token字符串,记得复制保存,因为后面就查不到了,只能重新生成

     

    解决环境问题,创建完Token后,我们继续运行配置:

      

    • 输入【Y】接受Team Explorer Everywhere许可协议;

    • 输入服务器URL,即项目的Azure的地址;

    • 输入身份验证类型,这里直接回车,选择默认的PAT;

    • 输入个人访问令牌,即PAT;

    • 连接服务器成功后,输入创建好的代理池;

    • 默认代理名称,也可以进行修改;

    • 因为我之前已经创建过了,所以是否替换的选择选择了【Y】;

    • 输入工作文件夹,直接回车,选择默认的【_work】;

     

    这样就完成了我们的代理服务器的配置工作.

    然后运行启动命令:

    ./run.sh

    这个时候我们应该就能在网页上看到我们的代理服务器上线了如图:

     

     

     

    4.采用服务的形式运行代理服务器

    上面我们的代理服务器虽然上线了,但是在linux中是主线程的形式,退出就关闭了..

    我们需要修改为服务的形式来运行.

    运行命令安装服务:

    sudo ./svc.sh install

    启动服务:

    sudo ./svc.sh start

    查看服务状态:

    sudo ./svc.sh status

    停止服务:

    sudo ./svc.sh stop

    更新环境变量(当你有其他插件安装或者更新时)

    ./env.sh
    sudo ./svc.sh stop
    sudo ./svc.sh start

     

    后记

    本篇主要讲解了如何创建自己的代理服务器池,下一篇我们主要讲解如何创建一个管道来自动编译和打包我们的项目.

    展开全文
  • 1. 登录至gitlab服务器 2. 找到Access Token生成的路径,如下图所示 3. 配置Gitlab的Access Token访问凭证 4. 复制新生成的Access Token填入Jenkins对应的框内 5. 点击应用,然后保存
  • Ladys and乡亲们! 异步图书君祝大家元旦快乐! 忙着写2017年总结的真爱粉儿们 2018年,你定了哪些新计划? 留言说给大家听听?...希望异步社区的真爱粉儿们共同成长 现在 2018年从1月新书说起
  • 这些图像经过优化,可上的项目一起使用。 Docker容器简化了CD工具的设置,封装了执行流水线步骤所需的工具和环境。 如果您想学习如何使用项目“ Piper”,请参阅。 “”中介绍了项目“ Piper”未涵盖的入门资料...
  • 与docker devops-源码

    2021-02-18 05:14:26
    devops-with-docker
  • devops-with-docker-源码

    2021-03-21 07:44:48
    与docker devops
  • DevOps(英文Development和Operations的组合)是一组过程、方法系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作整合。它的出现是由于软件行业日益清晰地认识到:...
  • Docker Bridge0一、两个容器间通信二、容器外网访问 一、两个容器间通信 二、容器外网访问
  • 这三年中,Docker 自始至终将 " Build , Ship , Run "当作公司的宗旨,也就是帮助用户完成任意应用的构建、发布运行。 通过总结 Docker 的三年,我们不难发现 Docker 的步伐: 第一年,专注软件构建,对接构建...
  • 一时间, Docker 、微服务、 DevOps 以及精益研发等新词汇,在较短的时间内,即充斥着整个 IT 行业。基础设施领域,巨头的垄断,以及技术壁垒的存在,往往会限制入局者,也让后来者望而却步。面对业务需求的不断演进...
  • 概念介绍 Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互...DevOps
  • 本课程学习需具有一定的 Linux 基础知识,属于基础类型课程,为后面的 Devops 学习打下根基,主要讲解了以下几个方面:   1.     容器架构以及术语的介绍 2.    ...
  • DevOps Git及GitLab Docker

    2019-12-20 16:03:37
    这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...
  • DevOps开发运维持续集成相关知识

    万次阅读 2017-07-10 19:07:14
    本以为DevOps与Docker无关了,没想到Docker在这个领域也是神一样的存在。Docker支持持续集成/持续交互(CI/CD),Docker的目标是让我们的环境构建变得简单,让开发人员更关注自己的代码,同时也不需要运维介入,每一次...
  • 利用Docker 实现自动热部署 简单的流程 开发人员在本地完成代码开发后,提交到本地分支,利用docker模拟生产环境进行测试,测试通过后合并到远端的主分支; master 主分支一旦更新后,触发持续集成软件进行打包...
  • 1. DevOps简介 DevOps 就是开发(Development)、测试(QA)、运维(Operations)这三个领域的合并。 为什么要合并这三个领域?主要是开发和运维的脱节。 DevOps是一种思想、一组最佳实践、以及一种文化。...
  • 值此新春佳节将近之际,JFrog为广大DevOps团队奉上新春福利:我们宣布一项能够为我们的客户和整个DevOps社区带来实质性收益的重大举措,那就是,JFrog与Docker建立开创性的合作伙伴关系,使JFrog DevOps平台的云用户...
  • 所有与DevOps相关的脚本,资源和配置 细节 作者:Anirban Roy Das 电子邮件: 版权所有(C):2016, Roy Das 查看DevOps/LICENSE文件以获取完整的版权声明。 支持平台 MacO(主要) Linux 注意事项 该项目具有...
  • 前几年一直流传这一句话,虚拟机已死,容器才是未来! 这句话听起来似乎不可思议,很显然有的事容器... 看到标题大家可能会对DevOps这个名词很好奇,这里给出百度百科的解释。 看起来很不错吧,不过这里先不对De...
  • 因此在大型应用中急需一种成本更低、更高效、自动化的技术解决运维问题,而这一切随着 DevOps Docker 容器化技术的逐渐落地已经成为现实。本讲咱们将围绕 DevOps 容器化技术讲解三方面内容: 介绍什么是 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 633
精华内容 253
关键字:

devops与docker