如何将数据库的docker容器放在生产中的其他主机上?

时间:2016-06-04 10:52:35

标签: docker docker-compose docker-machine docker-swarm

假设我们有一个简单的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方式是什么?

1 个答案:

答案 0 :(得分:1)

在我看来,数据库位于容器世界的边缘,它们对于开发和测试很有用,但生产数据库本质上通常不是非常短暂或便携的东西。当然Flocker 像Cassandra一样有助于扩展类型的数据库,但数据库可以有非常具体的要求,可以更好地将其视为容器化应用程序(RDSCloud SQL等)后面的服务。

在任何情况下,您都需要一个容器编排工具。

您可以对Compose + Swarm应用manual scheduling constraints来指示容器可以运行的docker主机。对于您的数据库,您可能有:

environment:
  - "constraint:storage==ssd"

否则,您可以使用AnsibleChefPuppet

设置更加静态的Docker环境

使用支持泊坞窗的其他业务流程工具:KubernetesMesosNomad

使用容器服务:Amazon ECSDocker Cloud/Tutum