ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 软件工程 >> docker Docker 三剑客之 Docker Swarm

docker Docker 三剑客之 Docker Swarm(1/6)

来源:网络整理     时间:2017-12-06     关键词:docker

本篇文章主要介绍了"docker Docker 三剑客之 Docker Swarm",主要涉及到docker方面的内容,对于软件工程感兴趣的同学可以参考一下: 上一篇:Docker 三剑客之 Docker Compose阅读目录:Docker Machine 创建 Docker 主机Docker Swarm 配置集群节...

上一篇:Docker 三剑客之 Docker Compose

阅读目录:

  • Docker Machine 创建 Docker 主机
  • Docker Swarm 配置集群节点
  • Docker Service 部署单个集群服务
  • Docker Stack 部署多个集群服务,以及 GUI 管理页面
  • docker-machine、docker swarm、docker node、docker service 和 docker stack 常用命令

Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合。

从 Docker 1.12.0 版本开始,Docker Swarm 已经包含在 Docker 引擎中(docker swarm),并且已经内置了服务发现工具,我们就不需要像之前一样,再配置 Etcd 或者 Consul 来进行服务发现配置了。

1. Docker Machine 创建 Docker 主机

在进行 Docker Swarm 配置之前,我们还需要说下 Docker 另外一个官方工具 Docker Machine(也是 Docker 三剑客之一),其作用就是快速帮助我们搭建 Docker 主机环境,比如我们要使用 Docker Swarm,就必须有很多的 Docker 主机来进行操作,Docker Machine 就是最理想的工具。

因为我是在 Mac OS 上进行操作的,并且 Docker for Mac 已经包含了 Docker Machine(docker machine),所以我不需要再额外进行安装了,如果使用 Linux 系统的话,安装也非常简单,命令:

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

好了,我们先使用 Docker Machine 创建四个 Docker 主机,命令:

$ docker-machine create -d virtualbox manager1 &&docker-machine create -d virtualbox manager2 &&docker-machine create -d virtualbox worker1 &&docker-machine create -d virtualbox worker2

Running pre-create checks...
(worker1)No default Boot2Docker ISO found locally, downloading the latest release...
(worker1)Latest release for github.com/boot2docker/boot2docker is v17.11.0-ce
(worker1)Downloading /Users/xishuai/.docker/machine/cache/boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v17.11.0-ce/boot2docker.iso...

执行上面命令,你会发现速度巨慢(如上),原因是从 GitHub 上下载一个boot2docker.iso文件(国内网络没办法),怎么解决呢?很简单,我们使用翻X的浏览器手动下载boot2docker.iso文件,然后拷贝到对应目录下(我电脑的目录/Users/xishuai/.docker/machine/cache/),然后再执行上面的命令,发现速度快的一批。

我们可以查看下创建的 Docker 主机信息,命令:

$ docker-machine ls
NAME       ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
manager1   -        virtualbox   Running   tcp://192.168.99.100:2376           v17.11.0-ce   
manager2   -        virtualbox   Running   tcp://192.168.99.101:2376           v17.11.0-ce   
worker1    -        virtualbox   Running   tcp://192.168.99.102:2376           v17.11.0-ce   
worker2    -        virtualbox   Running   tcp://192.168.99.103:2376           v17.11.0-ce   

可以看到,我们创建了四个 Docker 主机(两个 Manager 和两个 Worker),我们还可以连接到任何一台服务器进行操作,命令:

$ docker-machine ssh manager1
                        ##         .## ## ##        ==## ## ## ## ##    ===/"""""""""""""""""\___/ ===      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~           \______ o           __/             \    \         __/              \____\_______/ _                 _   ____     _            _| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __| '_ \ / _ \ / _ \| __| __) / _`|/ _ \ / __||/ / _ \ '__|| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ ||_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|Boot2Docker version 17.11.0-ce, build HEAD : e620608 - Tue Nov 21 18:11:40 UTC 2017Docker version 17.11.0-ce, build 1caf76c

2. Docker Swarm 配置集群节点

我们执行下面命令:

$ docker-machine ssh manager1 "docker swarm init --advertise-addr 192.168.99.100"Swarm initialized: current node (n0ub7dpn90rxjq97dr0g8we0w) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-5uwpqibnvmho1png8zmhcw8274yanohee32jyrcjlait9djhsk-envtxo4dl6df2ar3qldcccfdg 192.168.99.100:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

上面是在manager1主机上,创建一个 Docker Swarm 管理节点(初始化集群的时候,会自动把当前节点设置为管理节点)。

接着,我们在worker1worker2主机上,创建两个工作节点,并加入到集群中,命令:

$ docker-machine ssh worker1 "docker swarm join --token SWMTKN-1-5uwpqibnvmho1png8zmhcw8274yanohee32jyrcjlait9djhsk-envtxo4dl6df2ar3qldcccfdg 192.168.99.100:2377"This node joined a swarm as a worker.

$ docker-machine ssh worker2 "docker swarm join --token SWMTKN-1-5uwpqibnvmho1png8zmhcw8274yanohee32jyrcjlait9djhsk-envtxo4dl6df2ar3qldcccfdg 192.168.99.100:2377"This node joined a swarm as a worker.

还有另外一个manager2主机,需要配置为管理节点,我们需要先在manager1主机上,获取管理节点对应的token,然后再配置为管理节点,命令:

docker相关图片

docker相关文章