首页 > 其他 > 详细

Docker Swarm

时间:2018-01-30 21:06:06      阅读:326      评论:0      收藏:0      [点我收藏+]
Docker Swarm是什么?

是一个用于创建 Docker 主机集群的工具,使用 Swarm 操作集群,会使用户感觉就像是在一台主机上进行操作,docker1.12 集成了 swarmkit, 使你可以不用安装额外的软件包, 使用简单的命令启动创建docker swarm 集群。

实验环境:

这里选择三台主机运行 Swarm,依次为:

node1 192.168.182.100

node2 192.168.182.101

node3 192.168.182.102

做前基本操作

技术分享图片

技术分享图片

开启路由转发

技术分享图片

技术分享图片

检查 docker 版本

技术分享图片

防洪墙

技术分享图片

设置主机名:

技术分享图片

技术分享图片

技术分享图片

node1

3 台主机均修改/etc/hosts 文件,添加所有主机的 ip 地址和主机名的映射记录

技术分享图片

开启宿主机之间的端口

TCP 端口 2377 集群管理端口

TCP 与 UDP 端口 7946 节点之间通讯端口

TCP 与 UDP 端口 4789 overlay 网络通讯端口

技术分享图片

配置所有节点密钥登录.

配置所下节点密钥互信, 在 node1 可以免密码登录各节点,只在 node1 上执行:

生成 sshkey

技术分享图片

发布 sshkey 到各个节点

技术分享图片

技术分享图片

技术分享图片

测试密钥登录

技术分享图片

创建 Swarm 集群

在 node1 上初始化 swram 集群:

只需要在一个 node1 上初始化 swarm 集群, 其他 node 加入这个集群就行了, 所以以

下命令只需要在 node1 上运行

技术分享图片

查看端口号监听情况

技术分享图片

查看 swarm 集群 node 列表

技术分享图片

在 node1 通过 ssh, 在 node2-node3 上执行上面的加入集群命令:

node2

技术分享图片

node3

技术分享图片

node1

再次检查集群节点列表, 我们可以看到所有的服务器都已经加入 swarm 集群了

技术分享图片

查看 node2 的 docker info

现在我们可以看到, 已经有3个manager节点了, 一个Leader节点, 一个Reachable节点. 现

在你也可以在 node2 上面管理整个 swarm 集群

技术分享图片

总结:

docker swarm:集群管理,子命令主要有下面几个。

docker swarm init 命令用于初始化一个集群

dockerswarm join 命令用于加入一个现有集群

dockerswarm leave 命令由于离开集群

技术分享图片

registry 的默认存储路径是/var/lib/registry,只是个临时目录,一段时间之后就会消失

所以使用-v 参数,指定个本地持久的路径

技术分享图片

技术分享图片

技术分享图片

返回{"repositories":[]} 说明 registry 服务工作正常.

技术分享图片

镜像信息存放在/var/lib/registry 目录下,因此这里将宿主机目录映射到/var/lib/registry

所有主机都指向 registry 服务器:

停止 docker 服务

#systemctl stop docker

修改/usr/lib/systemd/system/docker.service,修改后保存退出


技术分享图片

技术分享图片

把/usr/lib/systemd/system/docker.service传给node2 和node3

技术分享图片

重载 docker 服务并启动 docker 服务

技术分享图片

测试本地镜像仓库

在 node2 主机上推送镜像到 registry

需要先 tag 这个镜像

技术分享图片

技术分享图片

技术分享图片

将 tag 后的镜像上传到 registry.

技术分享图片

push 成功后, 可以调用 registry API 查看 registry 中的镜像

技术分享图片

技术分享图片

在 node3 主机测试从 registry 下载镜像

技术分享图片

技术分享图片

node2

overlay 网络

解决了镜像构建问题, 为了让应用跑在 swram 集群上,我们还需要解决容器间的网络访问问
题查看 swarm 集群 node 列表

技术分享图片

为 docker 应用创建一个名为 dockercoins 的 overlay network

技术分享图片

查询 docker network 列表

技术分享图片

docker service create 命令创建一个 service.
--name 标签命名 service 为 web1.
--replicas 标签来声明 1 个运行实体(即容器副本数)

注意, 我们启动的镜像名字 192.168.46.100:5000/centos:http 使用我们本地镜像仓库的镜像名
称, 这样当主机上没有这个镜像时, 会自动到本地镜像仓库拉取镜像

技术分享图片

使用 docker service ls 查看服务

技术分享图片

使用 docker serviceps<SERVICE-ID/NAME>查看服务运行在哪个节点上

技术分享图片

用浏览器访问 http://192.168.46.100:8000 就能访问测试页

技术分享图片

--replicas 标签来声明 2 个运行实体

查看服务:

技术分享图片

从下图可以看到 web1 service 目前只有一个副本.

技术分享图片

扩展已有的服务的副本数,这里将 web1 服务扩展到 3 个副本

技术分享图片

缩减已有的服务的副本数,这里将 web1 服务缩减到 2 个副本

技术分享图片


Docker Swarm

原文:http://blog.51cto.com/13551258/2067031

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!