假设我们有一个简单的Web应用程序堆栈,就像docker-compose.yml
docs中描述的那样。它的version: '2'
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
看起来像这样:
docker-swarm
这非常适合在笔记本电脑上进行开发。但是,在生产中,要求db容器位于其自己的主机上是有用的。教程我能够找到使用db
来扩展Web容器,但是不注意web
的实例和docker
的一个实例在同一台机器上运行的事实
是否可以使用 <a href="https://www.google.co.in/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png" download='download'>Click Here to download</a>
要求特定容器位于自己的计算机上(甚至更好,在特定计算机上)?如果是这样,怎么样?如果没有,在多容器应用程序中处理数据库的docker方式是什么?
答案 0 :(得分:1)
在我看来,数据库位于容器世界的边缘,它们对于开发和测试很有用,但生产数据库本质上通常不是非常短暂或便携的东西。当然Flocker 像Cassandra一样有助于扩展类型的数据库,但数据库可以有非常具体的要求,可以更好地将其视为容器化应用程序(RDS,Cloud SQL等)后面的服务。
在任何情况下,您都需要一个容器编排工具。
您可以对Compose + Swarm应用manual scheduling constraints来指示容器可以运行的docker主机。对于您的数据库,您可能有:
environment:
- "constraint:storage==ssd"
设置更加静态的Docker环境
使用支持泊坞窗的其他业务流程工具:Kubernetes,Mesos,Nomad
使用容器服务:Amazon ECS,Docker Cloud/Tutum