关于Docker Swarm更多的介绍请查看《Docker管理工具-Swarm部署记录》

一、环境配置

1、安装环境

# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
# docker version
Client:Version:      1.12.3API version:  1.24Go version:   go1.6.3Git commit:   6b644ecBuilt:        OS/Arch:      linux/amd64Server:Version:      1.12.3API version:  1.24Go version:   go1.6.3Git commit:   6b644ecBuilt:        OS/Arch:      linux/amd64

2、安装iptables,并关闭firewall防火墙,

# yum install iptables-services -y &&  systemctl enable iptables &&  service iptables save
# systemctl disable firewalld.service
# systemctl stop firewalld.service

关闭firewall防火墙,如果不开启iptables nat,Docker容器将无法正常启动。

  • 运行 sudo iptables -L | grep DOCKER 若输出

    DOCKER     all  --  anywhere             anywhere
    Chain DOCKER (1 references)

    则没问题。

  • 否则,运行 iptables-save > /etc/sysconfig/iptables 并编辑添加相应的内容:

    • *nat
      :PREROUTING ACCEPT [27:11935]
      :INPUT ACCEPT [0:0]
      :OUTPUT ACCEPT [598:57368]
      :POSTROUTING ACCEPT [591:57092]
      :DOCKER - [0:0]
      -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
      -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
      -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
      COMMIT
      # Completed on Sun Sep 20 17:35:31 2015
      # Generated by iptables-save v1.4.21 on Sun Sep 20 17:35:31 2015
      *filter
      :INPUT ACCEPT [139291:461018923]
      :FORWARD ACCEPT [0:0]
      :OUTPUT ACCEPT [127386:5251162]
      :DOCKER - [0:0]
      -A FORWARD -o docker0 -j DOCKER
      -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
      -A FORWARD -i docker0 ! -o docker0 -j ACCEPT
      -A FORWARD -i docker0 -o docker0 -j ACCEPT
      COMMIT
      # Completed on Sun Sep 20 17:35:31 2015

3、所有主机节点docker开启2375监听,docker版本不同,配置方式不一样

vim /etc/sysconfig/docker

......
OPTIONS='-H 0.0.0.0:2375 -H unix:///var/run/docker.sock'           //在OPTIONS参数项后面的''里添加内容

或者

# cat  /usr/lib/systemd/system/docker.service  |grep ExecStart
ExecStart=/usr/bin/dockerd   -H 0.0.0.0:2375  -H unix:///var/run/docker.sock

重启docker服务

systemctl daemon-reload    ##使配置文件生效
systemctl restart docker

二、Swarm安装和集群创建

1、Swarm镜像下载

# docker pull swarm
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/swarm     latest              36b1e23becab        4 months ago        15.85 MB

2、创建Swarm

# docker swarm init --advertise-addr  192.168.23.56:2377
Swarm initialized: current node (4cejtuairtof6d0wjq88merwb) is now a manager.To add a worker to this swarm, run the following command:docker swarm join \--token SWMTKN-1-3kntv9pmgo1w2uk4yqk79v0lw0z35uw2k5j6rw7cns2v0xv3tn-2zqnn7e2zf1azaad2teeh9arw \192.168.23.56:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

上面命令执行后,该机器自动加入到swarm集群。这个会创建一个集群token,获取全球唯一的 token,作为集群唯一标识。后续将其他节点加入集群都会用到这个token值。

其中,--advertise-addr参数表示其它swarm中的worker节点使用此ip地址与manager联系。命令的输出包含了其它节点如何加入集群的命令。

3、添加集群节点

[root@kbsonlong ~]# docker swarm join \
>     --token SWMTKN-1-3kntv9pmgo1w2uk4yqk79v0lw0z35uw2k5j6rw7cns2v0xv3tn-2zqnn7e2zf1azaad2teeh9arw \
>     192.168.23.56:2377
This node joined a swarm as a worker.

4、查看集群节点

[root@along ~]# docker node list
ID                           HOSTNAME     STATUS  AVAILABILITY  MANAGER STATUS
4cejtuairtof6d0wjq88merwb *  along.party  Ready   Active        Leader
9388mi6e3fnk9l70g24cljhr5    kbsonlong    Ready   Active

[root@along ~]# docker node list
ID                           HOSTNAME     STATUS  AVAILABILITY  MANAGER STATUS
4cejtuairtof6d0wjq88merwb *  along.party  Ready   Active        Leader
9388mi6e3fnk9l70g24cljhr5    kbsonlong    Ready   Active        //将kbsonlong  节点下线。如果要删除node1节点,命令是"docker node rm --force kbsonlong  "
[root@along ~]# docker node update --availability drain kbsonlong
kbsonlong
[root@along ~]# docker node list
ID                           HOSTNAME     STATUS  AVAILABILITY  MANAGER STATUS
4cejtuairtof6d0wjq88merwb *  along.party  Ready   Active        Leader
9388mi6e3fnk9l70g24cljhr5    kbsonlong    Ready   Drain
[root@along ~]#
//可以看到kbsonlong节点状态变为Drain,那么该节点就不会接受task任务分发,就算之前已经接受的任务也会转移到别的节点上。//再次修改为active状态(及将下线的节点再次上线)
[root@along ~]# docker node update --availability active kbsonlong
kbsonlong
[root@along ~]# docker node list
ID                           HOSTNAME     STATUS  AVAILABILITY  MANAGER STATUS
4cejtuairtof6d0wjq88merwb *  along.party  Ready   Active        Leader
9388mi6e3fnk9l70g24cljhr5    kbsonlong    Ready   Active
[root@along ~]#

##关于Swarm更多的命令行操作,请查看《Docker管理工具-Swarm部署记录》

三、Swarm 的Web管理(Portainer、Shipyard、Docerkui)

1、Portainer安装

# docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
-d 参数以detach方式运行
-p 将容器工作端口映射至物理机端口 HOST端口:容器端口
-v 将容器目录挂载(映射)到物理机对应位置,这里指定通讯方式为sock
portainer/portainer 为镜像名称portainner 也支持用TCP通讯,启动命令
# docker run -d -p 9000:9000 portainer/portainer -H tcp://<REMOTE_HOST>:<REMOTE_PORT>

优点
  1. 支持容器管理、镜像管理
  2. 轻量级,消耗资源少
  3. 基于docker api,安全性高,可指定docker api端口,支持TLS证书认证。
  4. 支持权限分配
  5. 支持集群
缺点
  1. 功能不够强大。
  2. 容器创建后,无法通过后台增加端口。

2、Shipyard

一键安装脚本

curl -sSL https://shipyard-project.com/deploy | bash -s

注意:由于Shipyard使用shipyard-proxy代理容器,所以需要把docker配置的tcp 0.0.0.0:2375关闭

[root@kbsonlong ~]# docker ps -a |grep shi
7122d3f37464        shipyard/shipyard:latest       "/bin/controller --de"   About an hour ago   Up About an hour    0.0.0.0:8080->8080/tcp                           shipyard-controller
b350b117d76d        swarm:latest                   "/swarm j --addr 172."   About an hour ago   Up About an hour    2375/tcp                                         shipyard-swarm-agent
a7feb0759efe        swarm:latest                   "/swarm m --replicati"   About an hour ago   Up About an hour    2375/tcp                                         shipyard-swarm-manager
3e784b0b2140        shipyard/docker-proxy:latest   "/usr/local/bin/run"     About an hour ago   Up About an hour    0.0.0.0:2375->2375/tcp                           shipyard-proxy
49f9700f0811        alpine                         "sh"                     About an hour ago   Up About an hour                                                     shipyard-certs
7fe4c0e821c1        microbox/etcd:latest           "/bin/etcd -addr 172."   About an hour ago   Up About an hour    0.0.0.0:4001->4001/tcp, 0.0.0.0:7001->7001/tcp   shipyard-discovery
e3750c5de7e2        rethinkdb                      "rethinkdb --bind all"   About an hour ago   Up About an hour    8080/tcp, 28015/tcp, 29015/tcp                   shipyard-rethinkdb
[root@kbsonlong ~]#

可以看到启动了7个Shipyard相关的容器

1、shipyard-rethinkdb  :数据存放

2、shipyard-discovery :自动发现

3、shipyard-certs:认证

4、shipyard-proxy:代理

5、shipyard-swarm-manager: swarm管理节点

6、shipyard-swarm-agent: swarm 工作节点 work

7、shipyard-controller:shipyard控制台,即Web页面

2、添加Swarm work节点,使用Shipyard时添加Swarm节点有点不一样

curl -sSL https://shipyard-project.com/deploy | ACTION=node DISCOVERY=etcd://10.0.1.10:4001 bash -s

ACTION

This controls the action for the deployment. Available options are:

  • deploy: Deploy a new Shipyard instance
  • upgrade: Upgrade an existing instance (note: you will need to pass the same environment variables as when you deployed to keep the same configuration)
  • node: Add current Docker engine as a new Swarm node in the cluster
  • remove: Completely removes Shipyard

DISCOVERY自动发现

etcd://10.0.1.10:4001  管理节点上的自动发现服务

:8080">:8080">:8080">:8080">http://<server_ip>:8080  admin/shipyard

优点:
  1. 支持镜像管理、容器管理。
  2. 支持控制台命令
  3. 容器资源消耗监控
  4. 支持集群swarm,可以随意增加节点
  5. 支持控制用户管理权限,可以设置某个容器对某个用户只读、管理权限。
  6. 有汉化版
缺点
  1. 启动容器较多,占用每个节点的一部分资源,

创建的Swarm集群无法使用Swarm service功能

转载于:https://www.cnblogs.com/adolfmc/p/9007115.html

Docker 集群Swarm创建和Swarm Web管理相关推荐

  1. Docker集群的创建与管理

    在<Docker简单入门>中编写一个应用程序,并将其转化为服务,在<Docker分布式应用>中,使应用程序在生产过程中扩展5倍,并定义应该如何运行.现在将此应用程序部署到集群上 ...

  2. docker实战2 (docker swarm的应用,docker集群的构建,在docker集群中部署服务的创建与更新)

    前言: 在之前曾写过一个关于docker集群创建的教程,但是不够深入,只是停留到集群的初始化和节点加入上,这次具体到服务,并详细讲解其中的原理.而且总结了很多自己做的过程中所踩过的很多坑(比如镜像的d ...

  3. Docker进阶学习实战:Swarm集群弹性创建服务

    docker-compose up 单机是启动一个项目. 集群就可以用到swarm 会有对应的docker-service 这里就要用到docker service 命令. [root@iZ0jl6r ...

  4. docker swarm的应用----docker集群的构建

    一.docker安装 这里我们安装docker-ce 的18.03版本 yum    -y remove docker  删除原有版本 #安装依赖包 [root@Docker ~]# yum -y i ...

  5. Docker实战 (docker swarm的应用,docker集群的构建,在docker集群中部署服务)

    Docker实战 ----docker swarm的应用,docker集群的构建,在docker集群中部署服务 转载来源:https://blog.csdn.net/No_red/article/de ...

  6. Docker集群管理之Swarm介绍

    [摘要] Docker自诞生以来,其容器特性以及镜像特性给DevOps爱好者带来了诸多方便.然而在很长的一段时间内,Docker只能在单host上运行,其跨host的部署.运行与管理能力颇受外界诟病. ...

  7. docker集群管理之swarm mode

    序言 当有多台物理机的时候,就要考虑使用集群的模式了,那么docker如何来使用集群来进行管理呢?在这里主要使用的是docker自带的swarm mode,也就是docker集群的管理和编排.所谓的编 ...

  8. Docker集群管理(DockerHub Harbor 打包-Jib 任务编排工具- docker-compose和Swarm)

    Docker 集群管理 Docker 集群管理 镜像仓库管理 DockerHUb仓库管理 什么是DockerHUb 账号注册和登陆 Docker客户端登录 管理镜像 推送镜像 仓库镜像测试 regis ...

  9. Swarm搭建Docker集群

    Swarm介绍 Swarm是Docker公司在2014年12月初发布的一套较为简单的工具,用来管理Docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机.Swarm使用标准的Docke ...

  10. Docker学习笔记 — Swarm搭建Docker集群

    http://www.cnblogs.com/rio2607/p/4445968.html#undefined Swarm介绍 Swarm是Docker公司在2014年12月初发布的一套较为简单的工具 ...

最新文章

  1. linux c 编译器处理警告、错误 #pragma GCC diagnostic ignored -Wunused
  2. javascript:void(0)与#区别
  3. linux指令 find指令详解
  4. 减少系统资源占用的15个CSS常识
  5. TT 安装 之 AIX
  6. mysql8连接数据库显示cache_MySQL数据库之mysql 8.0 java连接报错:Unknown system variable 'query_cache_size'...
  7. 浏览器里面看到的表单数据映射到python_python爬虫入门01:教你在 Chrome 浏览器轻松抓包...
  8. 用pycharm写python老是提示错误_python pycharm错误集锦
  9. 数据结构 二叉树 java_数据结构—二叉树
  10. OpenFeign封装为springboot starter
  11. php用户同步,ucenter同步用户登录【转】
  12. Spring 定时器的使用(task)
  13. Java求质数(素数)(超详细)
  14. 李永乐线性代数辅导讲义第四章学霸小结
  15. JavaScript锅打灰太狼游戏
  16. 爬虫入门-爬取有道在线翻译结果(1)
  17. powerVR tbdr 硬件架构理解
  18. 科普向-----验证码
  19. 无网络下imac重装系统
  20. 哈工大计算机 信息安全,2019年哈工大信息安全专业招多少研究生

热门文章

  1. 免费计算机实习周记word,计算机类实习周记
  2. 【机器人学习】四自由度机械臂运动学轨迹规划分析+运动空间分析+动力学分析(三维模型+matlab代码)
  3. ASIL:汽车功能安全等级总结
  4. (更改)作业:会员制营销与EMAIL营销
  5. JAVA程序员BUG集锦
  6. ASP.NET DataBinder.Eval()
  7. 兆骑科创创业赛事活动发布平台,创业赛事,项目路演
  8. MVC(Model View Controller)框架
  9. axios实现excel文件下载
  10. wxBot微信机器人框架