![](/img/trans.png)
[英]How to stop/start docker containers in swarm mode without removing?
[英]Limit useable host resources in Docker compose without swarm
我只是想在docker-compose文件中限制某些Docker容器的资源。 原因很简单:主机上正在运行多个应用程序/服务。 因此,我想避免一个容器可以使用例如所有内存,而这会损害其他容器。
从我学到的文档中,可以使用resources
完成此操作。 但这超出了deploy
。 所以我必须像下面的例子一样写我的docker-compose文件:
php:
image: php:7-fpm
restart: always
volumes:
- ./www:/www
deploy:
resources:
limits:
memory: 512M
这给了我警告:
警告:某些服务(php)使用'deploy'键,该键将被忽略。 Compose不支持部署配置-使用
docker stack deploy
部署到集群。
这似乎是正确的: docker stats
确认,该容器能够使用主机中的所有ram。
该文件说:
指定与服务的部署和运行有关的配置。 这仅在通过docker stack deploy部署到集群时才生效,并且被docker-compose up和docker-compose run忽略。
但是我不需要集群。 似乎没有其他方法可以使用docker composer文件来限制资源。 为什么无法像docker run
中那样指定某种memory
标签(如start-parameter)?
示例: docker run --memory=1g $imageName
这非常适合单个容器。 但是我不能使用它(至少不违反关注点的清晰区分),因为我需要使用两个不同的容器。
我发现,从版本3降级到版本2后,我可以直接使用mem_limit
(将version: '2'
放在顶部)。 但是我们当前使用的是3.1版,因此这不是一个长期的解决方案。 而且文档说, deploy.resources
是v2标签(例如mem_limit
)的新替代品。
有一天,版本2已弃用。 因此,至少在没有大量资源的情况下,使用最新版本无法进行资源管理吗? 对我来说似乎更糟,不能相信这个...
您可以在单一主机上以集群模式运行docker守护程序。 它将添加额外的不需要的功能,例如etcd服务发现,但这一切都在幕后。
Docker文档在此处对此有一个“注释” https://docs.docker.com/engine/swarm/swarm-tutorial/#three-networked-host-machines
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.