如何使用 Docker 群模式在容器之间共享数据?



我刚刚开始使用docker。我能够创建一个 docker 组合文件,该文件部署了我的应用程序的三个组件,并在一个主机中进行了必要数量的复制。 我想复制同样的东西,现在有多个主机。 我有三个进程 A[7 份] ,B [ 1 份] ,C [1 份] 我按照docker网站上的创建群教程进行操作,并设法创建了一个管理器并附加了两个worker。

所以现在当我运行我的命令时

docker stack deploy --compose-file docker-compose.yml perf

它确实生成了所需数量的机器,但所有这些都在管理器本身中。 理想情况下,我希望它们在管理器中生成 C 和 B,并生成在工作线程 1 和工作线程 2 之间分发的 A 副本。
这是我的码头工人-撰写文件

version: '3'
services:
A:
image: A:host
tty: true
volumes:
- LogFilesLocationFolder:/jmeter/log
- AntOutLogFolder:/antout
- ZipFilesLocationFolder:/zip
deploy:
replicas: 7
placement:
constraints: [node.role == worker]
networks:
- perfhost
B:
container_name: s1_perfSqlDB
restart: always
tty: true
image: mysql:5.5
environment:
MYSQL_ROOT_PASSWORD: ''
volumes:
- mysql:/var/lib/mysql
ports:  
- "3306:3306"
deploy:
placement:
constraints: [node.role == manager]
networks:
- perfhost
C:
container_name: s1_scheduler
image: C:host
tty: true
volumes:
- LogFilesLocationFolder:/log
- ZipFilesLocationFolder:/zip
- AntOutLogFolder:/antout
networks:
- perfhost
deploy:
placement:
constraints: [node.role == manager]
ports:
- "7000:7000"

networks:
perfhost:
volumes:
mysql:
LogFilesLocationFolder:
ZipFilesLocationFolder:
AntOutLogFolder:

B(如果我确实得到了这个工作,我如何使用卷在服务A的Conatiner和服务B的容器之间传输数据,因为它们在不同的主机上

一些提示和答案:

  • 对于服务名称,我不建议使用大写字母。使用有效的 DNS 主机名(小写,除 - 外没有特殊字符(。
  • container_name在 Swarm 中不受支持,因此不需要。看起来像 C:应该是类似scheduler等。使服务名称简单,以便在其虚拟网络上易于使用/记住。
  • 单个撰写文件中的所有服务始终位于 swarm 中的同一 docker 网络上(以及用于本地开发的 docker-compose(,因此无需网络分配或列出。
  • 重新启动:在 Swarm 中始终不需要。该设置不会被使用,无论如何都是默认设置。如果您将其用于 docker-compose,则很少需要它,因为您通常不希望应用程序在错误期间处于重生循环中,这通常会导致 CPU 争用条件。我建议把它关掉。
  • 使用"卷驱动程序"。默认值为local,就像普通的 docker 命令一样。如果您有共享存储,则可以使用 store.docker.com 中的卷驱动程序插件来确保共享存储连接到正确的节点。
  • 如果您仍然遇到工作人员/经理任务分配问题,请放置docker node ls的输出,也许docker service lsdocker node ps <managername>,以便我们帮助进行故障排除。

首先你应该运行docker node ls并检查您的所有节点是否都可用。如果是,则应检查辅助角色是否具有运行容器所需的映像。 我也会尝试使用每个节点的 id 来代替约束,您可以使用上一个命令查看 ids。

docker stack deploy之前运行:

mkdir /srv/service/public
docker run --rm -v /srv/service/public:/srv/service/public my-container-with-data cp -R /var/www/app/public /srv/service/public

使用二苣/srv/service/public作为容器中的体积。

相关内容

  • 没有找到相关文章

最新更新