• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > Docker Swarm入门实例详解

Docker Swarm入门实例详解

作者:左蓝 字体:[增加 减小] 来源:互联网

本文主要包含docker,swarm入门,docker,swarm,集群,swarm,集群负载等服务器相关知识,左蓝 希望可以进行参考

Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令。目前,Swarm 是 Docker 社区提供的唯一一个原生支持 Docker 集群管理的工具。它可以把多个 Docker 主机组成的系统转换为单一的虚拟 Docker 主机,使得容器可以组成跨主机的子网网络。

1. Swarm 认识

Swarm 是目前 Docker 官方唯一指定(绑定)的集群管理工具。Docker 1.12 内嵌了 swarm mode 集群管理模式。

为了方便演示跨主机网络,我们需要用到一个工具——Docker Machine,这个工具与 Docker Compose、Docker Swarm 并称 Docker 三剑客,下面我们来看看如何安装 Docker Machine:

$ curl -L https://github.com/docker/machine/releases/download/v0.9.0-rc2/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
  chmod +x /tmp/docker-machine &&
  sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

安装过程和 Docker Compose 非常类似。现在 Docker 三剑客已经全部到齐了。

在开始之前,我们需要了解一些基本概念,有关集群的 Docker 命令如下:

docker swarm:集群管理,子命令有 init, join,join-token, leave, update

docker node:节点管理,子命令有 demote, inspect,ls, promote, rm, ps, update

docker service:服务管理,子命令有 create, inspect, ps, ls ,rm , scale, update

docker stack/deploy:试验特性,用于多应用部署,等正式版加进来再说。

2. 创建集群

首先使用 Docker Machine 创建一个虚拟机作为 manger 节点。

$ docker-machine create --driver virtualbox manager1                  
Running pre-create checks...
(manager1) Unable to get the latest Boot2Docker ISO release version: Get https://api.github.com/repos/boot2docker/boot2docker/releases/latest: dial tcp: lookup api.github.com on [::1]:53: server misbehaving
Creating machine...
(manager1) Unable to get the latest Boot2Docker ISO release version: Get https://api.github.com/repos/boot2docker/boot2docker/releases/latest: dial tcp: lookup api.github.com on [::1]:53: server misbehaving
(manager1) Copying /home/zuolan/.docker/machine/cache/boot2docker.iso to /home/zuolan/.docker/machine/machines/manager1/boot2docker.iso...
(manager1) Creating VirtualBox VM...
(manager1) Creating SSH key...
(manager1) Starting the VM...
(manager1) Check network to re-create if needed...
(manager1) Found a new host-only adapter: "vboxnet0"
(manager1) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env manager1

查看虚拟机的环境变量等信息,包括虚拟机的 IP 地址:

$ docker-machine env manager1
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/home/zuolan/.docker/machine/machines/manager1"
export DOCKER_MACHINE_NAME="manager1"
# Run this command to configure your shell: 
# eval $(docker-machine env manager1)

然后再创建一个节点作为 work 节点。

$ docker-machine create --driver virtualbox worker1

现在我们有了两个虚拟主机,使用 Machine 的命令可以查看:

$ docker-machine ls               
NAME   ACTIVE  DRIVER    STATE  URL            SWARM DOCKER  ERRORS
manager1  -   virtualbox  Running tcp://192.168.99.100:2376     v1.12.3  
worker1  -   virtualbox  Running tcp://192.168.99.101:2376     v1.12.3

但是目前这两台虚拟主机并没有什么联系,为了把它们联系起来,我们需要 Swarm 登场了。

因为我们使用的是 Docker Machine 创建的虚拟机,因此可以使用 docker-machine ssh 命令来操作虚拟机,在实际生产环境中,并不需要像下面那样操作,只需要执行 docker swarm 即可。

把 manager1 加入集群:

$ docker-machine ssh manager1 docker swarm init --listen-addr 192.168.99.100:2377 --advertise-addr 192.168.99.100
Swarm initialized: current node (23lkbq7uovqsg550qfzup59t6) is now a manager.
To add a worker to this swarm, run the following command:
  docker swarm join \
  --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r \
  192.168.99.100:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

用 --listen-addr 指定监听的 ip 与端口,实际的 Swarm 命令格式如下,本例使用 Docker Machine 来连接虚拟机而已:

$ docker swarm init --listen-addr <MANAGER-IP>:<PORT>

接下来,再把 work1 加入集群中:

$ docker-machine ssh worker1 docker swarm join --token \
  SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r \
  192.168.99.100:2377
This node joined a swarm as a worker.

上面 join 命令中可以添加 --listen-addr $WORKER1_IP:2377 作为监听准备,因为有时候可能会遇到把一个 work 节点提升为 manger 节点的可能,当然本例子没有这个打算就不添加这个参数了。

注意:如果你在新建集群时遇到双网卡情况,可以指定使用哪个 IP,例如上面的例子会有可能遇到下面的错误。

$ docker-machine ssh manager1 docker swarm init --listen-addr $MANAGER1_IP:2377
Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on different interfaces (10.0.2.15 on eth0 and 192.168.99.100 on eth1) - specify one with --advertise-addr
exit status 1

发生错误的原因是因为有两个 IP 地址,而 Swarm 不知道用户想使用哪个,因此要指定 IP。

$ docker-machine ssh manager1 docker swarm init --advertise-addr 192.168.99.100 --listen-addr 192.168.99.100:2377 
Swarm initialized: current node (ahvwxicunjd0z8g0eeosjztjx) is now a manager.
To add a worker to this swarm, run the following command:
  docker swarm join \
  --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r \
  192.168.99.100:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

集群初始化成功。

现在我们新建了一个有两个节点的“集群”,现在进入其中一个管理节点使用 docker node 命令来查看节点信息:

$ docker-machine ssh manager1 docker node ls
ID            HOSTNAME STATUS AVAILABILITY MANAGER STATUS
23lkbq7uovqsg550qfzup59t6 * manager1  Ready   Active     Leader
dqb3fim8zvcob8sycri3hy98a  worker1   Ready   Active

现在每个节点都归属于 Swarm,并都处在了待机状态。Manager1 是领导者,work1 是工人。

现在,我们继续新建虚拟机 manger2、worker2、worker3,现在已经有五个虚拟机了,使用 docker-machine ls 来查看虚拟机:

NAME   ACTIVE  DRIVER    STATE   URL             SWARM  DOCKER  ERRORS
manager1  -    virtualbox  Running  tcp://192.168.99.100:2376      v1.12.3  
manager2  -    virtualbox  Running  tcp://192.168.99.105:2376      v1.12.3  
worker1  -    virtualbox  Running  tcp://192.168.99.102:2376      v1.12.3  
worker2  -    virtualbox  Running  tcp://192.168.99.103:2376      v1.12.3  
worker3  -    virtualbox  Running  tcp://192.168.99.104:2376      v1.12.3

然后我们把剩余的虚拟机也加到集群中。

添加 worker2 到集群中:

$ docker-machine ssh w
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Docker实践8:Compose,docker实践compose
  • Docker buildx构建多平台镜像并推送到私有仓库的方法
  • Docker三个基本概念镜像(Image)容器(Container)仓库(Repository)
  • 什么是Docker?为什么要使用Docker
  • docker 开源的应用容器引擎
  • 如何给docker设置http代理
  • docker官方mysql镜像自定义配置详解
  • 详解Docker数据管理(数据卷&数据卷容器)
  • 如何利用Docker容器实现代理转发与数据备份详解
  • 详解Docker Swarm 在持续集成测试中的应用

相关文章

  • docker 指定IP地址、与主机同网段IP
  • 详解基于本地存储的kvm虚拟机在线迁移
  • docker指令收集整理(收藏)
  • zabbix监控docker容器状态【推荐】
  • docker下安装Nginx的方法
  • Docker 搭建 Tomcat 运行环境的方法
  • 详解Docker方式实现MySql 主从复制(实践篇)
  • 详解如何使用Docker部署一个web项目并打包成镜像文件
  • virtualbox win7 iis 由于扩展配置问题而无法提供您请求的页面
  • Docker 数据卷及数据容器详细介绍及示例

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • VMware Workstation11.0安装Mac OS X 10.10最完整指南
    • 在docker中安装mysql详解
    • 在VMWare下LINUX中安装VMTool及共享文件夹
    • Rancher无法添加主机问题的解决方法
    • 使用Docker快速搭建Oracle开发环境的方法教程
    • Docker 容器文件系统详细介绍(图文)
    • CentOS 7.2 下安装 Docker 1.12.3 版的详细方法
    • Docker容器化spring boot应用详解
    • 详解Ubuntu Docker Registry 搭建私有仓库
    • docker images 如何建立自己的原生镜像

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有