小白学Docker之基础篇
小白学Docker之Compose
小白学Docker之Swarm
概念Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合。
创建一个集群 Mac,Linux,Window7和8虚拟主机安装Mac,Linux,Window7和8需要在本地安装虚拟机来创建虚拟主机,如果你已经配置了Docker Toolbox,那么就已经安装了Virtual Box,因此不需要重新安装
创建完之后运行下面的命令就可以在本地创建虚拟主机了:
docker-machine create --driver virtualbox myvm1 docker-machine create --driver virtualbox myvm2 Windows 10虚拟主机安装创建共享虚拟交换机,以便各个虚拟主机能够相互之间进行连接。
Virtual Switch(vSwitch)相当于一个虚拟的二层交换机,该交换机连接虚拟网卡和物理网卡,将虚拟机上的数据报文从物理网口转发出去。与物理交换机一样,vSwitch的作用就是用来转发数据。
启动Hyper-V管理器
进入管理页面之后,找到右手边的虚拟交换机管理器
打开管理器,创建虚拟交换机
进行虚拟交换机配置
之后执行下面的命令就可以创建虚拟主机了:
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1 docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm2 虚拟主机列表以及IP docker-machine ls 初始化集群并且添加节点将myvm1这台主机作为集群管理机,将myvm2作为工作节点加入到集群中,使用docker-machine ssh连接到虚拟机,使用docker swarm init来初始化节点。
docker-machine ssh myvm1 "docker swarm init --advertise-addr 10.5.21.30"将myvm2加入到swarm节点
docker-machine ssh myvm2 "docker swarm join --token SWMTKN-1-3k3mev52t5hegvsgoagqhmw05eknp3gbnbe 3qnbk78lenyxmy0-21x31f58ehp323w92tqjqazv6 10.5.21.30:2377"运行docker node ls查看集群中的节点:
docker-machine ssh myvm1 "docker node ls" 让你的shell直接和集群主机对话进行这个配置之后,就可以直接连接到集群主机了,以前你必须通过ssh先连接到主机执行命令,进行环境配置之后,你就可以直接使用类似docker-machine ls的命令了
Mac,Linux配置 # 1. 运行 docker-machine env myvm1 $ docker-machine env myvm1 export 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 ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS myvm1 * 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 myvm1 docker: '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 ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS myvm1 * hyperv Running tcp://10.5.21.30:2376 v18.02.0-ce myvm2 - hyperv Running tcp://10.5.21.31:2376 v18.02.0-ce 在集群主机上部署应用程序同Docker Compose里面讲到的一样,现在你可以使用下面的命令在集群上部署你的应用了
docker stack deploy -c docker-compose.yml getstartedlab查看集群中应用的运行情况
docker stack ps getstartedlab在浏览器中运行来查看集群的负载情况