博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小白学Docker之Swarm
阅读量:5119 次
发布时间:2019-06-13

本文共 5056 字,大约阅读时间需要 16 分钟。

承接上篇文章:,自学网站来源于

系列文章:

概念

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

创建一个集群

Mac,Linux,Window7和8虚拟主机安装

Mac,Linux,Window7和8需要在本地安装虚拟机来创建虚拟主机,如果你已经配置了,那么就已经安装了Virtual Box,因此不需要重新安装

创建完之后运行下面的命令就可以在本地创建虚拟主机了:

docker-machine create --driver virtualbox myvm1docker-machine create --driver virtualbox myvm2

Windows 10虚拟主机安装

创建共享虚拟交换机,以便各个虚拟主机能够相互之间进行连接。

Virtual Switch(vSwitch)相当于一个虚拟的二层交换机,该交换机连接虚拟网卡和物理网卡,将虚拟机上的数据报文从物理网口转发出去。与物理交换机一样,vSwitch的作用就是用来转发数据。

  1. 启动Hyper-V管理器

docker-Hyper-V

  1. 进入管理页面之后,找到右手边的虚拟交换机管理器

switch-manager

  1. 打开管理器,创建虚拟交换机

v-switch

  1. 进行虚拟交换机配置

v-switch-config

之后执行下面的命令就可以创建虚拟主机了:

docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm2

docker-machine-create

虚拟主机列表以及IP

docker-machine ls

docker-machine-ls

初始化集群并且添加节点

将myvm1这台主机作为集群管理机,将myvm2作为工作节点加入到集群中,使用docker-machine ssh连接到虚拟机,使用docker swarm init来初始化节点。

docker-machine ssh myvm1 "docker swarm init --advertise-addr 10.5.21.30"

docker-swarm-int

将myvm2加入到swarm节点

docker-machine ssh myvm2 "docker swarm join --token SWMTKN-1-3k3mev52t5hegvsgoagqhmw05eknp3gbnbe3qnbk78lenyxmy0-21x31f58ehp323w92tqjqazv6 10.5.21.30:2377"

docker-swarm-node-add

运行docker node ls查看集群中的节点:

docker-machine ssh myvm1 "docker node ls"

docker-swarm-nodels

让你的shell直接和集群主机对话

进行这个配置之后,就可以直接连接到集群主机了,以前你必须通过ssh先连接到主机执行命令,进行环境配置之后,你就可以直接使用类似docker-machine ls的命令了

Mac,Linux配置

# 1. 运行 docker-machine env myvm1$ docker-machine env myvm1export DOCKER_TLS_VERIFY="1"export DOCKER_HOST="tcp://192.168.99.100:2376"export DOCKER_CERT_PATH="/Users/sam/.docker/machine/machines/myvm1"export DOCKER_MACHINE_NAME="myvm1"# Run this command to configure your shell:# eval $(docker-machine env myvm1)# 2. 运行上一个命令结果的最后一句eval $(docker-machine env myvm1)# 3. 使用docker-machine查看结果$ docker-machine lsNAME    ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORSmyvm1   *        virtualbox   Running   tcp://192.168.99.100:2376           v17.06.2-ce   myvm2   -        virtualbox   Running   tcp://192.168.99.101:2376           v17.06.2-ce

Windows 10配置

> docker-machine env myvm1docker: 'env' is not a docker command.See 'docker --help'PS C:\WINDOWS\system32> docker-machine env myvm1$Env:DOCKER_TLS_VERIFY = "1"$Env:DOCKER_HOST = "tcp://10.5.21.30:2376"$Env:DOCKER_CERT_PATH = "C:\Users\huyh\.docker\machine\machines\myvm1"$Env:DOCKER_MACHINE_NAME = "myvm1"$Env:COMPOSE_CONVERT_WINDOWS_PATHS = "true"# Run this command to configure your shell:# & "C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe" env myvm1 | Invoke-Expression> & "C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe" env myvm1 | Invoke-Expression> docker-machine lsNAME    ACTIVE   DRIVER   STATE     URL                     SWARM   DOCKER        ERRORSmyvm1   *        hyperv   Running   tcp://10.5.21.30:2376           v18.02.0-cemyvm2   -        hyperv   Running   tcp://10.5.21.31:2376           v18.02.0-ce

docker-machine-env

在集群主机上部署应用程序

同里面讲到的一样,现在你可以使用下面的命令在集群上部署你的应用了

docker stack deploy -c docker-compose.yml getstartedlab

查看集群中应用的运行情况

docker stack ps getstartedlab

docker-swarm-deploy

在浏览器中运行http://10.5.21.30来查看集群的负载情况

docker-swarm-hostname

如果你想增加实例数,只需要在docker-compose.yml中修改replicas的数量,然后直接运行docker stack deploy -c docker-compose.yml getstartedlab即可,不需要摧毁stack和容器。

关闭应用和swarm

# Take the app down with docker stack rm:docker stack rm getstartedlab# Take down the swarm.docker-machine ssh myvm2 "docker swarm leave"docker-machine ssh myvm1 "docker swarm leave --force"

离开集群主机shell

eval $(docker-machine env -u)

重启Docker Machine

> $ docker-machine lsNAME    ACTIVE   DRIVER       STATE     URL   SWARM   DOCKER    ERRORSmyvm1   -        virtualbox   Stopped                 Unknownmyvm2   -        virtualbox   Stopped                 Unknown> $ docker-machine start myvm1Starting "myvm1"...(myvm1) Check network to re-create if needed...(myvm1) Waiting for an IP...Machine "myvm1" was started.Waiting for SSH to be available...Detecting the provisioner...Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.> $ docker-machine start myvm2Starting "myvm2"...(myvm2) Check network to re-create if needed...(myvm2) Waiting for an IP...Machine "myvm2" was started.Waiting for SSH to be available...Detecting the provisioner...Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.

GUI图形界面管理

使用visualizer或者portainer镜像来启动GUI图形界面服务,这里使用portainer

  1. 更改docker-compose.yml文件
version: "3"services:  web:    image: rynxiao/get-started:service    deploy:      replicas: 5      resources:        limits:          cpus: "0.1"          memory: 50M      restart_policy:        condition: on-failure    ports:      - "80:80"    networks:      - webnet  portainer:    image: portainer/portainer    ports:      - "9000:9000"    volumes:       - "//var/run/docker.sock:/var/run/docker.sock"     deploy:      replicas: 1      placement:        constraints: [node.role == manager]networks:  webnet:
  1. 重启服务:
docker stack deploy -c docker-compose.yml getstartedlab
  1. 在浏览器中输入http://10.5.21.30:9000

docker-gui-portainer

参考链接

转载于:https://www.cnblogs.com/rynxiao/p/8436032.html

你可能感兴趣的文章
计科院静态网页(作业七)
查看>>
lua--table
查看>>
linux 相关使用总结
查看>>
Function与Module的差异与应用场景
查看>>
安装了USB IF 测试工具, 大容量的U盘不能用了
查看>>
bzoj2653: middle
查看>>
linux命令将一个文件夹里面的所有文件复制到指定文件里
查看>>
mybatis属性详解
查看>>
2019年微服务5大趋势,你pick哪个?
查看>>
从细节处谈Android冷启动优化
查看>>
SparkSQL大数据实战:揭开Join的神秘面纱
查看>>
如何实现最佳的跨平台游戏体验?Unity成亮解密实时渲染
查看>>
pat09-散列1. Hashing (25)
查看>>
Leetcode 345. Reverse Vowels of a String
查看>>
Python实践笔记
查看>>
ios 多线程 面试
查看>>
关于EasyUI DataGrid行编辑时嵌入时间控件
查看>>
Linux ed
查看>>
转 c#代码访问https服务器以及https的webservice
查看>>
【Vijos】【1923】漫长的等待
查看>>