Docker Swarm

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker Swarm相关的知识,希望对你有一定的参考价值。

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

现在我们可以看到, 已经有3manager节点了, 一个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的主要内容,如果未能解决你的问题,请参考以下文章

Docker——Docker基础+Docker安装

重启docker命令(docker自动重启)

Docker教程-1-学习及安装Docker

Docker教程-1-学习及安装Docker

Docker03 Docker基础知识Docker实战

Docker学习__docker命令[docker version 和 docker info]