swarm

从零开始学习docker(十五)Swarm mode 介绍

北城以北 提交于 2019-11-29 18:47:14
一般情况下,我们都在一台机器下部署容器,但实际情况下,应用如果只在一台机器上无法满足我们的需求,包含的容器比较多。因此在生产环境下部署我们的应用就会涉及到非常多的容器,这样就会给我们带来一系列的问题: 怎么去管理这么多的容器? 怎么能方便的横向扩展? 如果容器down了,怎么能自动恢复? 如何去更新容器而不影响业务? 如何去监控追踪这些容器? 怎么去调度容器的创建? 保护隐私数据? 这样我们就需要容器编排技术,Swarm Mode应运而生。 Swarm 并不是唯一一个可以做容器编排的工具,只不过Swarm是内置于docker的一个工具。因此我们使用Swarm时不需要安装任何东西,Swarm已经内置到我们系统里面了,只不过我们没有运行在Swarm 模式下,我们一般运行在单机模式下。因此swarm就是初学者接触容器编排的第一个工具。 Swarm 架构 Swarm是一种集群架构,既然是集群,那么一定有节点,有节点那么就有角色。在Swarm中节点node一共有两种角色,第一种角色叫Manager,第二种角色叫worker。 Manager节点好比集群的大脑,在生产环境中,为了避免单点故障,“大脑”至少要有两个,因此会有状态同步,即在一个Manager产生的数据如何同步到另外的Manager节点上,这里就涉及到一个内置的分布式存储数据库,数据通过raft协议去做同步

从零开始学习docker(十七)Swarm mode ---service

独自空忆成欢 提交于 2019-11-29 18:47:00
上一节中,我们学习了如何搭建一个swarm集群。本节中,我们介绍如何操作service。 service,大家应该不陌生,我们在之前讲过。一个service就对应一个container容器。我们之前使用docker compose时,一个service时部署在一台机器上面的。但是我们在swarm下面,我们创建一个service时,他可能会运行在我们cluster中的任何一个节点中去,下面详细介绍。 docker service 命令 docker service create 有点像docker run 在swarm下面,我们不适用docker run命令来运行容器。docker run表示在本地创建一个container。而service不一定运行在本地。所以在swarm下,一般不用docker run。 我们用创建一个service: vincent@swarm-manager:~$ docker service create --name demo busybox sh -c "while true; do sleep 3600;done" lf0wx1k2xz3l88mandyifkdm7 overall progress: 1 out of 1 tasks 1/1: running verify: Service converged 查看service情况:

从零开始学习docker(二十)RoutingMesh--Ingress负载均衡

时间秒杀一切 提交于 2019-11-29 18:46:50
我们知道容器之间的通信,例如上图中的10.0.9.3与10.0.9.5通信是通过overlay网络,是通过一个VXLAN tannel来实现的。 但是service和service之间通信是通过VIP实现的。例如client的service与web 的service进行通信,而web有一个scale,因此client访问web是通过访问虚拟IP(VIP)来实现的。那么VIP是怎么映射到具体的10.0.9.5或者10.0.9.6呢?这是通过LVS实现的。 什么是LVS? LVS,Linux Virtual Server。可以实现在系统级别的负载均衡。 我们可以在三个节点上任何一个节点访问80端口都可以访问到wordpress,这个实现就是IngressNetWork的作用。任何一台swarm节点上去访问端口服务时,会通过端口服务通过本节点IPVS(IP Virtual Service),并通过LVS给loadbanlance到真正具有service上面,例如上图中我们通过访问Docker Host3 转发到另外两个节点中。 我们的实验环境跟上一节一样,我们将whoami 的scale 变为2 iie4bu@swarm-manager:~$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS h4wlczp85sw5 client

前端到docker入门

∥☆過路亽.° 提交于 2019-11-29 10:11:23
Docker的诞生 我们总是会遇到测试对开发说项目又不work了,开发总说:在我电脑上是ok的阿。 项目组加了新人,我们就需要教新人配置各种开发环境,每换一台机器就要配置一次,每来一个新人就要配置一次。 于是我们想,有什么办法可以在安装软件的时候把环境也安装过来?一摸一样复制过来就没这么多问题了。 于是,我们开始用虚拟机,它自己一套系统,然后你在里面配置好环境,复制给队友就好了。根本上虚拟机也是一个文件。 但是有个缺点就是太大了!启动太慢!一些系统的操作完全是多余的。 于是就开始用linux容器。Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。容器里面的应用,直接就是底层系统的一个进程,操作系统使用宿主的操作系统。 Docker 就是 Linux 容器的一种封装。 Docker 做什么 web应用的自动化打包测试 微服务 提供开发环境 安装docker应用 mac 安装地址https://store.docker.com/editions/community/docker-ce-desktop-mac 通过dmg安装,打开这个应用就可以了。 通过 docker -v 来测试有没有安装成功。 第一个docker应用 docker的强大之处,一句开启一个nginx服务。 docker run -d -p 80:80 --name webserver nginx 然后打开

Kubernetes 入门必备云原生发展简史

痞子三分冷 提交于 2019-11-29 08:57:58
作者|张磊 阿里云容器平台高级技术专家,CNCF官方大使 “未来的软件一定是生长于云上的”这是云原生理念的最核心假设。而所谓“云原生”,实际上就是在定义一条能够让应用最大程度利用云的能力、发挥云的价值的最佳路径。在这条路径上,脱离了“应用”这个载体,“云原生”就无从谈起;容器技术,则是将这个理念落地、将软件交付的革命持续进行下去的重要手段之一。 云原生技术发展简史 2004 年— 2007 年,Google 已在内部大规模地使用像 Cgroups 这样的容器技术; 2008 年,Google 将 Cgroups 合并进入了 Linux 内核主干; 2013 年,Docker 项目正式发布。 2014 年,Kubernetes 项目也正式发布。这样的原因也非常容易理解,因为有了容器和 Docker 之后,就需要有一种方式去帮助大家方便、快速、优雅地管理这些容器,这就是 Kubernetes 项目的初衷。在 Google 和 Redhat 发布了 Kubernetes 之后,这个项目的发展速度非常之快。 2015 年,由Google、Redhat 以及微软等大型云计算厂商以及一些开源公司共同牵头成立了 CNCF 云原生基金会。CNCF 成立之初,就有 22 个创始会员,而且 Kubernetes 也成为了 CNCF 托管的第一个开源项目。在这之后,CNCF 的发展速度非常迅猛;

Kubernetes 入门必备云原生发展简史

匆匆过客 提交于 2019-11-29 07:31:34
作者|张磊 阿里云容器平台高级技术专家,CNCF 官方大使 “未来的软件一定是生长于云上的”这是云原生理念的最核心假设。而所谓“云原生”,实际上就是在定义一条能够让应用最大程度利用云的能力、发挥云的价值的最佳路径。在这条路径上,脱离了“应用”这个载体,“云原生”就无从谈起;容器技术,则是将这个理念落地、将软件交付的革命持续进行下去的重要手段之一。 云原生技术发展简史 2004 年— 2007 年,Google 已在内部大规模地使用像 Cgroups 这样的容器技术; 2008 年,Google 将 Cgroups 合并进入了 Linux 内核主干; 2013 年,Docker 项目正式发布。 2014 年,Kubernetes 项目也正式发布。这样的原因也非常容易理解,因为有了容器和 Docker 之后,就需要有一种方式去帮助大家方便、快速、优雅地管理这些容器,这就是 Kubernetes 项目的初衷。在 Google 和 Redhat 发布了 Kubernetes 之后,这个项目的发展速度非常之快。 2015 年,由Google、Redhat 以及微软等大型云计算厂商以及一些开源公司共同牵头成立了 CNCF 云原生基金会。CNCF 成立之初,就有 22 个创始会员,而且 Kubernetes 也成为了 CNCF 托管的第一个开源项目。在这之后,CNCF 的发展速度非常迅猛;

docker启动容器端口映射错误

冷暖自知 提交于 2019-11-29 02:27:44
今天用docker的swarm搭建了一个集群,在启动主节点的swarm的时候出错了,报的错误是: /usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint goofy_bose (317173685c23c029fd5f28b88ecf1ad2ac425e0338a22ba2b3eeec7b945519fd): iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3375 -j DNAT --to-destination 172.17.0.2:2375 ! -i docker0: iptables: No chain/target/match by that name. 看到这个错误我觉得可能是防火墙的原因,但是我防火墙已经关闭了,后来到网上查了一下,发现关闭防火墙还不行, 还需要重启docker服务,于是执行service docker restart,再一次启动swarm容器,OK成功! 来源: CSDN 作者: Guoshi_Wan 链接: https://blog.csdn.net/Wan_Guo_Shi

Docker容器实战(二) -"鲸鱼"公司粉墨登场

限于喜欢 提交于 2019-11-28 23:20:42
一天天的,PaaS深入人心,Cloud Foundry为首的传统PaaS,开始蓄力基础设施领域的 平台化 和 PaaS化 ,于是发现了PaaS中的问题 1 如何给应用打包 Cloud Foundry/OpenShift/Clodify都没给出答案,走向碎片化歪路 此时,名不见经传的PaaS创业公司dotCloud,却选择了开源自研的容器项目 Docker 谁也不会料到,就这样一个平淡无奇古天乐一般的技术,开启了名为“Docker”的新时代 这个🐳公司,最重要的战略之一就是:坚持把**“开发者”群体放在至高无上的位置** Docker项目的推广策略从一开始就呈现出一副“憨态可掬”的亲人姿态,把每一位后端技术人员(而不是资本家)作为主要的传播对象。 简洁的UI,有趣的demo,“1分钟部署一个WordPress网站”“3分钟部署一个Nginx集群”,这种同开发者之间与生俱来的亲近关系,使Docker项目迅速成为了全世界会议上最受追捧的新星 > Docker项目,给后端开发者提供了走向聚光灯的机会 > 比如Cgroups和Namespace这种已经存在多年却很少被人们关心的特性,在2014年和2015年竟然频繁入选各大技术会议的分享议题,就因为听众们想要知道Docker这个东西到底是怎么一回事儿。 一方面解决了应用打包和发布这一困扰运维人员多年的技术难题 另一方面

docker 实践八:docker-compose

末鹿安然 提交于 2019-11-28 23:05:07
本篇介绍 docker 官方三剑客之一的 docker-compose。 注:环境为 CentOS7,docker 19.03。 docker-compose docker-compose 的前身是开源的 docker 容器集群编排工具 Fig,2014年7月,Fig 被 Docker 收购并更名成为 docker-compose。 之前我们已经学习了关于 docker 的 dockerfile,使用它可以让用户快速生成一个需要的镜像,进而生成容器,快速配置一个应用。但是云计算的使用更多是面对庞大的用户群体,这样一来所发布的容器数量必然不少。而单机的 dockerfile 相比起来就相形见绌了。因此,像 Fig 这样的工具就孕育而生了。如果说 dockerfile 重现一个容器,那 docker-componse 就是重现容器的配置和集群了。 在 docker 中,“编排”和“部署”这两个词是时常出现的,那么它们具体指什么呢? 编排(orchestration):它根据被部署的对象之间的耦合关系,以及被部署对象对环境的依赖,制定部署流程中各个动作的执行顺序,部署过程中所需要的依赖文件和被部署文件的存储位置和获取方式,以及如何验证部署成功。这些信息都会在编排工具中以指定的格式(比如配置文件或者特定的代码)来要求运维人员定义并保存起来