Kaj*_*nus 8 docker docker-compose docker-swarm
有Docker Swarm(现在内置在Docker中)和Docker-Compose.人们似乎只在单个节点上运行容器时使用Docker-Compose.但是,Docker-Compose不支持任何deploy配置值,请参阅https://docs.docker.com/compose/compose-file/#deploy,其中包含mem_limit和cpus,这似乎很好/很重要,可以设置.
所以也许我应该使用Docker Swarm?虽然我只在单个节点上部署.此外,安装说明将更容易让其他人遵循(他们不需要安装Docker-Compose).
但也许有理由不在单个节点上使用Swarm?
我在下面发布了一个答案,但我不确定它是否正确.
编辑:请注意,这不是基于意见的问题.如果你看看下面的答案,你会发现有关于此的"必须"和"不能做"的事实.
为了进行开发,请使用Docker-Compose。因为只有Docker-Compose才能读取您的Dockerfile并为您构建映像。相反,Docker Stack需要预构建的映像。此外,借助Docker-Compose,您可以使用docker-compose kill ...和轻松启动和停止单个容器... start ...。根据我的经验,这在开发过程中很有用。例如,查看您杀死数据库后应用服务器的反应。然后,您不希望Swarm直接自动重新启动数据库。
在生产中,请使用Docker Swarm(除非:请参阅下文),以便您可以配置内存限制。多克-撰写有泊坞群(例如没有MEM或CPU限制),并没有任何不群较少的功能不会有(右?)。因此,没有理由在生产中使用Compose。(也许您不知道Compose的工作原理,并且不想花时间阅读新的Swarm命令。)
但是,Docker Swarm不支持.envDocker-Compose这样的文件。因此,您不能IMAGE_VERSION=1.2.3在.env文件中包含例如,然后在docker-compose.yml文件中包含:image: name:${IMAGE_VERSION}。参见https://github.com/moby/moby/issues/29133 —相反,您需要“手动”设置env var :(IMAGE_VERSION=SOMETHING docker stack up ...这实际上使我坚持使用Docker-Compose。+我并没有很快找到通过Swarm了解如何查看容器的日志; Swarm似乎更复杂。)
| 归档时间: |
|
| 查看次数: |
819 次 |
| 最近记录: |