与docker的内部基础设施

我有一个小公司networking与以下服务/服务器:

  • jenkins
  • 藏匿(atlassian)
  • 合stream(atlassian)
  • LDAP
  • owncloud
  • zabbix(监控)
  • 木偶
  • 和一些java-web-apps

所有运行在独立虚拟子网上的单独kvm(libvirt)-vms都在两台机器(1个内部,1个hetzner-rootserver)之间。 我正在考虑切换到docker。 但有两个问题给我:

  • 我怎样才能实现docker集装箱之间的networking安全(即我想阻止owncloud访问除了ldap-hosts-sslport的networking中的任何主机)
    • 只是通过使用docker连接? 如果是的话:docker真的只允许访问链接的容器,但没有其他人?
    • 通过使用kubernetes?
    • 通过为每个容器添加多个桥接networking接口?
  • 你会把所有的infra-services / -servers切换到docker,还是只有docker上的owncloud和java-web-apps的混合解决scheme?

关于多主机联网:你说得对,Docker链接不能跨主机工作。 使用Docker 1.9+,您可以使用“Docker Networking”,如其博客文章http://blog.docker.com/2015/11/docker-multi-host-networking-ga/中所述

但是,他们并没有解释如何保证连接。 我强烈build议在你的Docker守护进程上启用TLS,这也应该保护你的多主机networking(这是一个假设,我还没有尝试过)。

使用Kubernetes,您将添加另一个抽象层,以便您需要学习使用Pod和服务概念。 这很好,但可能有点太多了。 请记住,您仍然可以决定稍后使用Kubernetes(或其他select),所以第一步应该是学习如何将您的服务包装在Docker容器中。

您不一定必须将所有内容切换到Docker。 您应该从Jenkins,Java应用程序或OwnCloud开始,然后更熟悉Docker的世界。 Jenkins和OwnCloud会给你足够的挑战,以获得一些维护容器的经验。 然后,如果Docker在您的设置中有意义并且需要将其应用于其他服务,则可以评估得更好。

我个人倾向于将所有东西都包装在Docker中,但只是由于一个原因:保持主机清洁。 如果你到了Docker中所有东西都运行的地步,你将有更多的自由来select一个服务可以运行的地方,你可以更容易地将容器移动到其他主机。

您还应该探索Docker Hub,在那里您可以find运行解决scheme的准备,例如Atlassian Stash: https : //hub.docker.com/r/atlassian/stash/

如果您需要特殊应用程序的灵感,以及如何将它们包装在Docker中,我build议在https://github.com/jfrazelle/dockerfiles中查看 – 您会在那里find一些很好的示例。