先决条件
安装 Docker 1.13 或更高版本 https://docs.docker.com/engine/installation/ .
获取 Docker Compose https://docs.docker.com/compose/overview/ , 请参考第三节
https://docs.docker.com/get-started/part3/#prerequisites
按照第四节中的描述获取 Docker Machine https://docs.docker.com/machine/overview/ .
在第二节中了解如何创建容器.
确保您的图像作为已部署的容器运行. 运行此命令, 在您的信息槽中 username,repo 和 tag:
docker run -p 80:80 username/repo:tag
, 然后访问 http://localhost/.
docker-compose.yml 从第 3 部分 https://docs.docker.com/get-started/part3/
获得一份方便的副本.
确保您在第四节中设置的计算机正在运行并准备就绪. 运行 docker-machine ls 以验证这一点. 如果计算机已停止, 请运行
docker-machine start myvm1
以引导管理器, 然后
docker-machine start myvm2
再引导该工作程序.
让你在第四节中创建的 swarm 运行并准备就绪. 运行
docker-machine ssh myvm1 "docker node ls"
以验证这一点. 如果群集已启动, 则两个节点都会报告 ready 状态. 如果不是, 重新初始化群和描述中加入 worker.
介绍
在第四节中, 您学习了如何设置一个群集, 这是一个运行 Docker 的计算机集群, 并为其部署了一个应用程序, 其中容器在多台计算机上协同运行.
在第 5 部分中, 您将到达分布式应用程序层次结构的顶部: 堆栈. 堆栈是一组相互关联的服务, 它们共享依赖关系, 并且可以协调和缩放在一起. 单个堆栈能够定义和协调整个应用程序的功能(尽管非常复杂的应用程序可能希望使用多个堆栈).
一些好消息是, 从第 3 部分开始, 当您创建 Compose 文件并使用时, 您在技术上一直在使用堆栈 docker stack deploy. 但这是在单个主机上运行的单个服务堆栈, 这通常不会在生产中发生. 在这里, 您可以学习所学内容, 使多个服务相互关联, 并在多台计算机上运行它们.
添加新服务并重新部署
将服务添加到我们的 docker-compose.yml 文件很容易. 首先, 让我们添加一个免费的可视化服务, 让我们看看我们的 swarm 如何调度容器.
docker-compose.yml
在编辑器中打开并用以下内容替换其内容. 请务必更换
username/repo:tag 镜像详细信息.
- version: "3"
- services:
- web:
- # replace username/repo:tag with your name and image details
- image: benjamin77/image:part2
- deploy:
- replicas: 5
- restart_policy:
- condition: on-failure
- resources:
- limits:
- cpus: "0.1"
- memory: 50M
- ports:
- - "80:80"
- networks:
- - webnet
- visualizer:
- image: dockersamples/visualizer:stable
- ports:
- - "8080:8080"
- volumes:
- - "/var/run/docker.sock:/var/run/docker.sock"
- deploy:
- placement:
- constraints: [node.role == manager]
- networks:
- - webnet
- networks:
- webnet:
这里唯一新的是对等服务 web, 名为 visualizer.
注意这里有两个新的东西: 一个 volumes 键, 让可视化工具访问 Docker 的主机套接字文件,
以及一个 placement 密钥, 确保这个服务只能在一个 swarm 管理器上运行 - 绝不是一个工人.
这是因为这个容器是由 Docker 创建的开源项目 https://github.com/ManoMarks/docker-swarm-visualizer
构建的 https://github.com/ManoMarks/docker-swarm-visualizer , 它显示了在图中的 swarm 上运行的 Docker 服务.
2. 确保您的 shell 配置为与之通信 myvm1
- [root@docker11 docker_install]# docker-machine ls
- NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
- myvm1 - virtualbox Running tcp://192.168.99.100:2376 v18.06.0-ce
- myvm2 - virtualbox Running tcp://192.168.99.101:2376 v18.06.0-ce
- [root@docker11 docker_install]# docker-machine env myvm1
- export DOCKER_TLS_VERIFY="1"
- export DOCKER_HOST="tcp://192.168.99.100:2376"
- export DOCKER_CERT_PATH="/root/.docker/machine/machines/myvm1"
- export DOCKER_MACHINE_NAME="myvm1"
- # Run this command to configure your shell:
- # eval $(docker-machine env myvm1)
- [root@docker11 docker_install]# eval $(docker-machine env myvm1)
- [root@docker11 docker_install [myvm1]]#
- 3.docker stack deploy
在管理器上重新运行该命令, 并更新需要更新的任何服务:
- [root@docker11 docker_install]# eval $(docker-machine env myvm1)
- [root@docker11 docker_install [myvm1]]# docker stack deploy -c docker-compose.yml getstartedlab
- Creating service getstartedlab_visualizer
- Updating service getstartedlab_web (id: 3gnwxgnc10ie0jgmvq19ws5tb)
- [root@docker11 docker_install [myvm1]]#
来源: http://www.bubuko.com/infodetail-2734018.html