我需要为同一张图片启动多个容器。如果我按如下所示创建我的撰写文件,则可以正常工作。
version: '2'
services:
app01:
image: app
app02:
image: app
app03:
image: app
app04:
image: app
app05:
image: app
我有什么简单的方法可以提及撰写实例的数量,而不是多次复制和粘贴?
Answers:
更新的答案(2017年10月)
正如其他人提到的那样,docker API已更改。我正在更新我的答案,因为这是大多数人可能会看到的答案。
docker-compose up -d --scale app=5
不幸的是,我们目前无法在docker-compose.yml文件中指定此版本(从3.5版开始)。
详细信息:
他们确实scale
为docker-compose的2.2和2.3版本引入了该选项,但为3.0版删除了该选项。另外,要使用2.2或2.3版本,您需要下载旧版本的docker-compose工具。当前版本不支持2.2或2.3(但是支持2.0或2.1)。还有一个新deploy
部分,replicas: 5
但仅适用于群体模式。
---旧答案--------------------------------------
docker-compose scale app=5
参见https://docs.docker.com/compose/reference/scale/
然后,您只需要此docker-compose文件
version: '2'
services:
app:
image: app
expose:
在同一网络上暴露的端口到其他服务或ports:
暴露端口到主机(公开访问)。docs.docker.com/compose/compose-file/#short-syntax-1
-d
(守护程序模式)意味着一旦使用Ctrl + C终止最后一个缩放的容器,所有使用同一docker-compose
文件启动的容器都将停止。非常危险。我建议加入-d
到docker-compose up
在上面的答案,以避免复制/粘贴灾害。
up -d
。这次是错别字。
scale
现在不推荐使用该命令,up
而应该使用它。
docker-compose up --scale app=2
您可以replica
按照https://docs.docker.com/compose/compose-file/#replicas中所述进行操作
version: '3'
services:
worker:
image: dockersamples/examplevotingapp_worker
networks:
- frontend
- backend
deploy:
mode: replicated
replicas: 6
编辑(根据评论):可以docker-compose --compatibility up
使docker接受部署部分,而无需使用swarm。
docker-compose up
命令忽略了该选项。
docker-compose --compatibility up
而使docker接受deploy
部分。
docker-compose up
,它将运行预先配置的实例数?