docker 官方文档(四)swarm

一、安装docker machine

$ base=http://github.com/docker/machine/releases/download/v0.14.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo install /tmp/docker-machine /usr/local/bin/docker-machine

  备注:官网上的地址是https,但是下载过程中出现:

Fail connect to github-production-release-asset-2e65be.s3.amazonaws.com:443

可以将https变为http便可下载成功。

二、安装Oracle VirtualBox 


sudo sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian/dists xenial contrib" >> /etc/apt/sources.list.d/virtualbox.list' wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add - sudo apt update sudo apt install virtualbox-5.2

  注意官网中的地址已经变为增加/dists。在vm中运行virtualBox会出现问题,可以直接在windows中运行

三、建立一组虚拟机用docker-machine命令

docker-machine create --driver virtualbox dev
docker-machine create --driver virtualbox myvm2

  显示创建的vms和他们的ip

docker-machine ls

  将一个vm设置为manager,系统会自动生成docker swarm join --tokern的信息,将该信息发送给myvm2,将myvm2设置为worker

docker-machine ssh dev "docker swarm init --advertise-addr 192.168.99.101

  另一个设置为worker:

docker-machine ssh myvm2 "docker swarm join --token SWMTKN-1-20rqpsrv3i7m13crnu8zfgkha7lclp1px35ej2lan6xju71by3-ehspi
jmkd13ibutp3abfpatqq 192.168.99.101:2377"

  在manger中查看节点信息

docker-machine ssh dev "docker node ls"

  

四、部署应用在建立的swarm集群上

到目前为止,您已经将Docker命令包装在docker-machine ssh与VM通信中。另一种选择是运行docker-machine env <machine>以获取并运行一个命令,该命令将当前shell配置为与VM上的Docker守护程序通信。此方法适用于下一步,因为它允许您使用本地docker-compose.yml文件“远程”部署应用程序,而无需将其复制到任何位置。

docker-machine env dev

  复制出现的命令并执行:

eval $("H:\Docker Toolbox\docker-machine.exe" env dev)

  检查是否设置成功:

docker-machine ls

  dev的active选项编为*,代表已经将dev的守护进程设置为默认守护进程。

向第三部分一样部署项目并查看

docker stack deploy -c docker-compose.yml getstartedlab

  

 docker stack ps getstartedlab

  可以看到应用已经自动部署到了dev和myvm2上面。

你可以从IP地址来访问你的应用程序要么devmyvm2

您创建的网络在它们之间共享并进行负载平衡。运行 docker-machine ls以获取VM的IP地址,并在浏览器上访问其中任何一个,点击刷新(或只是curl它们)。

 

 

docker-machine create --driver virtualbox myvm1 # Create a VM (Mac, Win7, Linux)
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1 # Win10
docker-machine env myvm1                # View basic information about your node
docker-machine ssh myvm1 "docker node ls"         # List the nodes in your swarm
docker-machine ssh myvm1 "docker node inspect <node ID>"        # Inspect a node
docker-machine ssh myvm1 "docker swarm join-token -q worker"   # View join token
docker-machine ssh myvm1   # Open an SSH session with the VM; type "exit" to end
docker node ls                # View nodes in swarm (while logged on to manager)
docker-machine ssh myvm2 "docker swarm leave"  # Make the worker leave the swarm
docker-machine ssh myvm1 "docker swarm leave -f" # Make master leave, kill swarm
docker-machine ls # list VMs, asterisk shows which VM this shell is talking to
docker-machine start myvm1            # Start a VM that is currently not running
docker-machine env myvm1      # show environment variables and command for myvm1
eval $(docker-machine env myvm1)         # Mac command to connect shell to myvm1
& "C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe" env myvm1 | Invoke-Expression   # Windows command to connect shell to myvm1
docker stack deploy -c <file> <app>  # Deploy an app; command shell must be set to talk to manager (myvm1), uses local Compose file
docker-machine scp docker-compose.yml myvm1:~ # Copy file to node's home dir (only required if you use ssh to connect to manager and deploy the app)
docker-machine ssh myvm1 "docker stack deploy -c <file> <app>"   # Deploy an app using ssh (you must have first copied the Compose file to myvm1)
eval $(docker-machine env -u)     # Disconnect shell from VMs, use native docker
docker-machine stop $(docker-machine ls -q)               # Stop all running VMs
docker-machine rm $(docker-machine ls -q) # Delete all VMs and their disk images

  

 

posted @ 2018-07-12 18:42  tutu_python  阅读(231)  评论(0)    收藏  举报