swarm

[docker swarm] 从单容器走向负载均衡部署

僤鯓⒐⒋嵵緔 提交于 2019-12-01 04:49:18
背景     之前写过<<docker-compose真香>> 和《docker-compose、docker stack前世今生》两篇博客, 回顾一下思路: ① docker-compose是docker引擎之上的容器编排工具,Python语言编写; docker stack 是docker引擎原生支持的容器编排技术(Go语言) ② 两者都支持最近docker-compose.yml 版本3容器编排定义文件,部分指令有差异。 昨天生产环境 .NetCore程序突然爆出错误(1个月前也出现过), 先抛出来给网友看下: exception happen when [request for 2246:5ead5a42f80e1000100000005d99f945] : System.InvalidOperationException: Stack empty. at System.Collections.Generic.Stack`1.ThrowForEmptyStack() at System.Collections.Generic.Stack`1.Pop() at NLog.NestedDiagnosticsContext.StackPopper.System.IDisposable.Dispose() at Microsoft.Extensions.Logging.Logger

从零开始学习docker(十六)Swarm mode 创建集群

时间秒杀一切 提交于 2019-11-30 23:45:46
这一节我们介绍如何搭建一个三节点的swarm集群。安装docker的同时,swarm已经内置了。所以不需要额外安装 准备环境: 三台安装了docker的服务器。 swarm manager: 192.168.0.109 swarm worker1: 192.168.0.107 swarm worker2: 192.168.0.110 docker swarm init --advertise-addr 表示我们要初始化一个swarm就要宣告一个地址,因为他是一个cluster,必须有多个节点。如何让别的节点知道我们的存在呢?需要advertise-addr 我们本地的地址。 我们现在swarm manager上运行: vincent@192:~$ docker swarm init --advertise-addr=192.168.0.109 Swarm initialized: current node (u6bj8diva2g7yn0y0x1h7lrff) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-0csi5bbc0dazkq3yrqrzv09aatddo5iq9e3dal5anzvbsv46r5

从零开始学习docker(十八)Swarm mode 部署wordpress

孤街浪徒 提交于 2019-11-30 23:45:22
本次我们部署一个稍微负复杂的application--wordpress。 之前我们使用docker run分别创建了两个容器,一个是wordpress,一个是mysql。因为他们是连接到同一个network中,所以他们可以相互通信。 这一节我们用service的形式部署到cluster中。 首先我们创建的service会部署在哪个节点中我们事先是不知道的。而一个mysqlservice和wordpress service很有可能不在一个节点上,如何通信? 我们可以通过overlay的方式,将两个service都连接到一个overlay上,这样不管是否在同一台节点中都可以进行通信。 创建overlay网络 vincent@swarm-manager:~$ docker network create -d overlay demo 3jgzsg1gt3gxb1u1i3l7rgqdi 查看一下确实添加上了demo的overlay网络: vincent@swarm-manager:~$ docker network ls NETWORK ID NAME DRIVER SCOPE 1273b71b09c8 bridge bridge local 3jgzsg1gt3gx demo overlay swarm 0d41041dafaa docker_gwbridge bridge local

从零开始学习docker(十九)Swarm mode 集群服务间通信--RoutingMesh

北城以北 提交于 2019-11-30 23:44:42
在上一节中,我们介绍了通过service create部署了wordpress和mysql,我们发现了几个问题: 不同节点之间如何通信? 通过service创建,将mysql和wordpress部署到cluster中,然后这两个service位于不同的节点上,这两个节点之间是可以相互通信的,并且可以通过service name进行通信,这里面就涉及到一个DNS服务发现的问题。 我们在之前将docker-compose时讲过,我们通过docker-compose部署一个application,这个application中的service 如果是连在了同一个网络上,那么他们之间是可以通过service name相互访问的。这个底层是通过DNS服务去实现的。这是docker-compose在单机的情况下。 今天我们在swarm cluster中我们的service是位于不同的节点上面,他们之间也可以通过service name进行通信的,所以说这也是DNS的功劳在里面。对于swarm来讲,我们有内置的DNS服务发现功能,通过swarm创建一个service时,如果是连到了一个overlay上,就可以为所有连到这个overlay上的service增加一条DNS记录,然后通过DNS记录就可以得到IP地址,然后就可以访问服务了。如下图所示: 其中DNS的name用service name来表示

Docker客户端命令

人盡茶涼 提交于 2019-11-30 19:23:10
客户端命令(docker COMMAND --help的翻译) attach:依附到一个正在运行的容器中; build:从一个 Dockerfile 创建一个镜像; commit:从一个容器的修改中创建一个新的镜像; cp:在容器和本地宿主系统之间复制文件中; create:创建一个新容器,但并不运行它; diff:检查一个容器内文件系统的修改,包括修改和增加; events:从服务端获取实时的事件; exec:在运行的容器内执行命令; export:导出容器内容为一个 tar 包; history:显示一个镜像的历史信息; images:列出存在的镜像; import:导入一个文件(典型为 tar 包)路径或目录来创建一个本地镜像; info:显示一些相关的系统信息; inspect:显示一个容器的具体配置信息; kill:关闭一个运行中的容器 (包括进程和所有相关资源); load:从一个 tar 包中加载一个镜像; login:注册或登录到一个 Docker 的仓库服务器; logout:从 Docker 的仓库服务器登出; logs:获取容器的 log 信息; network:管理 Docker 的网络,包括查看、创建、删除、挂载、卸载等; node:管理 swarm 集群中的节点,包括查看、更新、删除、提升/取消管理节点等; pause:暂停一个容器中的所有进程;

Docker客户端命令

守給你的承諾、 提交于 2019-11-30 19:17:18
客户端命令(docker COMMAND --help的翻译) attach:依附到一个正在运行的容器中; build:从一个 Dockerfile 创建一个镜像; commit:从一个容器的修改中创建一个新的镜像; cp:在容器和本地宿主系统之间复制文件中; create:创建一个新容器,但并不运行它; diff:检查一个容器内文件系统的修改,包括修改和增加; events:从服务端获取实时的事件; exec:在运行的容器内执行命令; export:导出容器内容为一个 tar 包; history:显示一个镜像的历史信息; images:列出存在的镜像; import:导入一个文件(典型为 tar 包)路径或目录来创建一个本地镜像; info:显示一些相关的系统信息; inspect:显示一个容器的具体配置信息; kill:关闭一个运行中的容器 (包括进程和所有相关资源); load:从一个 tar 包中加载一个镜像; login:注册或登录到一个 Docker 的仓库服务器; logout:从 Docker 的仓库服务器登出; logs:获取容器的 log 信息; network:管理 Docker 的网络,包括查看、创建、删除、挂载、卸载等; node:管理 swarm 集群中的节点,包括查看、更新、删除、提升/取消管理节点等; pause:暂停一个容器中的所有进程;

Docker 部署 zookeeper

核能气质少年 提交于 2019-11-30 17:59:08
说明 系统:CentOS-7.6 1810 Minimal zookeeper_ver: 3.4.14 基于此环境之上 1.安装docke环境 https://my.oschina.net/yx571304/blog/3113758 2.配置存储(Glusterfs) https://my.oschina.net/yx571304/blog/3113769 3.docker-compose 安装(使用下面的脚本安装docker-compose) curl -sSL https://dwz.cn/XOJj0Njx -o docker.sh chmod +x docker.sh ./docker.sh compose docker-compose方式部署 可固定容器IP 容器名称 健康检查无法做到异常退出(仅显示容器状态) 仅单机部署 创建数据目录 mkdir -p /swarm/volumes/zk-{1..3} 创建yaml文件 cat > zookeeper.yaml <<'EOF' version: '3.7' services: zk-1: image: zookeeper:3.4.14 restart: always hostname: zk-1 container_name: zk-1 ports: - 2181:2181 environment: TZ: Asia

docker stack /swarm 替代 docker-compose 进行部署

早过忘川 提交于 2019-11-30 16:56:21
之前一直用docker-compose开发了几个单例的service, 今天开始压力测试, 结果发现postgres的CPU负载很重, 就想设置cpus 结果发现docker-compose V3之后 只能写在deploy字段里, 但是docker-compose up 却不支持 deploy https://docs.docker.com/compose/compose-file/#deploy 说只能用swarm 模式. 这等于说V3的 docker compose 不能直接设定这个? 现在把swarm启动搞定了. 大概明白docker的意思了: 编辑同一份docker-compose.yml, 但是compose 和 swarm/stack的分工是这样的: docker-compose 用于dev 支持build restart 但是不支持deploy, swarm/stack 用于 prod 支持 cpu各种限制, 但是不支持build, 只支持image 假设已经用docker-compose基本开发完毕. 那么准备工作是这样: 一 docker-compose.yml swarm模式, 每个serive都必须有image,不能只有build. 最简单的方法,就是先docker-compose up --build 启动运行无误 然后docker image ls

docker swarm创建swarm集群

半城伤御伤魂 提交于 2019-11-30 14:29:37
三台linux主机 manager:192.168.100.151 work1:192.168.100.156 work2:192.168.100.157 manager docker swarm init --advertise-addr=192.168.100.151 会产生一个join-token: To add a manager to this swarm, run the following command: docker swarm join --token SWMTKN-1-17o3nuwv15qcg7f3omsxslb110nr54ndz4otwpjub6g9z18mdk-12aaimdkubrbm7j49pyd8xwo8 192.168.100.151:2377 work1 docker swarm join --token SWMTKN-1-17o3nuwv15qcg7f3omsxslb110nr54ndz4otwpjub6g9z18mdk-12aaimdkubrbm7j49pyd8xwo8 192.168.100.151:2377 work2 docker swarm join --token SWMTKN-1-17o3nuwv15qcg7f3omsxslb110nr54ndz4otwpjub6g9z18mdk

Docker 的步伐:DevOps 与 OS 化

放肆的年华 提交于 2019-11-30 07:54:44
摘要: 过去十年云计算的发展,在 IT 领域为共享经济提供了新的机遇;而过去五年移动互联网的兴起,更是在诸多方面给 IT 架构提出了新的挑战。新的挑战,新的机遇,同时也意味着新的活力。一时间,Docker 、微服务、DevOps 以及精益研发等新词汇,在较短的时间内,即充斥着整个 IT 行业。 过去十年云计算的发展,在 IT 领域为共享经济提供了新的机遇;而过去五年移动互联网的兴起,更是在诸多方面给 IT 架构提出了新的挑战。新的挑战,新的机遇,同时也意味着新的活力。一时间,Docker 、微服务、DevOps 以及精益研发等新词汇,在较短的时间内,即充斥着整个 IT 行业。基础设施领域,巨头的垄断,以及技术壁垒的存在,往往会限制入局者,也让后来者望而却步。面对业务需求的不断演进,软件提供商的应对能力如何,在机遇面前同样接受考验。 往往是时代的领航者,首先嗅探到历史变革前的酝酿。我们大致看到: 对的时机,新的思想总显得有些俏皮,同时还不失冒进。 思想背后,我们也总能发现:有些公司进行着那些惊为天人的尝试,他们激进,他们开拓,他们从 0 到 1 。Docker 这家公司在这其中不可谓是浓墨重彩的一笔。 目前为止,历史给了 Docker 三年多的时间。这三年中,Docker 自始至终将 " Build , Ship , Run " 当作公司的宗旨,也就是帮助用户完成任意应用的构建