docker - 如何确定扩容服务的副本数
问题描述
我有一个 docker-compose 文件,它公开了 2 个服务,一个主服务和一个从服务。我希望能够使用从服务扩展到一定数量的实例
docker-compose up --scale slave=N
但是,我必须在主服务中运行的命令中指定的选项之一是预期的从属实例的数量。例如,如果我缩放 slave=10,我需要在主服务的命令中设置 --num-slaves=10。
有没有办法从 docker-compose 文件本身或自定义入口点 shellscript 确定给定服务的实例数?
我面临的问题是,由于我还没有找到从 docker-compose 文件格式本身指定缩放实例的数量,所以我依靠运行命令的人输入比例因子一致并且使该值与我需要告诉主节点期望的值保持一致。相信用户做正确的事是灾难的根源。如果我可以继续让用户在命令行上指定比例值,我需要一种方法来确定该值在运行时是什么。
解决方案
不幸的是,没有办法为 docker compose 定义副本。它仅适用于 DOCKER SWARM文档指定它链接
提示:或者,在 Compose 文件版本 3.x 中,您可以在部署键下指定副本作为 Swarm 模式的服务配置的一部分。部署键及其子选项(包括副本)仅适用于 docker stack deploy 命令,不适用于 docker-compose up 或 docker-compose run。
所以如果你在 yaml 中有 deploy 部分,但是用 docker-compose 运行它,那么它不会生效。
version: "3.3"
services:
alpine1:
image: alpine
container_name: alpine1
command: ["/bin/sleep", "10000"]
deploy:
replicas: 4
alpine2:
image: alpine
container_name: alpine2
command: ["/bin/sleep", "10000"]
deploy:
replicas: 2
因此,在 docker compose 中扩大规模的唯一方法是手动运行 scale 命令。
docker-compose scale alpine1=3
注意我有一份他们喜欢 docker-compose 的工作,所以我们有 bash 脚本来执行你描述的操作。所以例如我们会有类似的东西./controller-app.sh scale test_service=10
,它会运行docker-compose scale test_service=10
更新
要检查副本的数量,您可以将 docker 套接字安装到您的容器中。然后运行docker ps --format {{ .Names }} | grep $YOUR_CONTAINER_NAME
。
这是安装插座的方法。
docker run -v /var/run/docker.sock:/var/run/docker.sock -it alpine sh
安装泊坞窗
apk update
apk add docker
推荐阅读
- sql-server - Django 插入 MSSQL 数据库不起作用
- c++ - 为什么我们可以从函数中返回 char*?
- javascript - 为什么图像不能使用 javascript 正确更改为 gif?
- sql - SQL 如何更新文本引用中同一表库中的列?
- git - Github io页面没有更新
- node.js - 使用 NodeJS 创建 AWS S3 对象生命周期
- python - 在python中组合元组数据框列表
- javascript - 记忆组件的子组件是否也被记忆?
- python - 如何提高 CNN 在图像识别上的准确率
- python - 如何将 go.FigureWidget 保存为 html(plotly,python)?