0

I have a small company network with the following services/servers:

  • Jenkins
  • Stash (Atlassian)
  • Confluence (Atlassian)
  • LDAP
  • Owncloud
  • zabbix (monitoring)
  • puppet
  • and some Java web apps

all running in separate kvm(libvirt)-vms in separate virtual-subnets on 2 machines (1 internal, 1 hetzner-rootserver) with shorewall inbetween. I'm thinking about switching to Docker.

But I have two questions:

  • How can I achieve network security between docker containers (i.e. I want to prevent owncloud to access any host in the network except ldap-hosts-sslport)
  • Just by using docker-linking? If yes: does docker really allow to access only linked containers, but no others?
  • By using kubernetes?
  • By adding multiple bridging-network-interfaces for each container?
  • Would you switch all my infra-services/-servers to docker, or a hybrid solution with just the owncloud and the java-web-apps on docker?
4

2 回答 2

1

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

但是,他们没有解释如何保护连接。我强烈建议在您的 Docker 守护程序上启用 TLS,这也应该保护您的多主机网络(这是一个假设,我没有尝试过)。

使用 Kubernetes,您将添加另一层抽象,因此您需要学习使用 pod 和服务概念。这很好,但可能有点太多了。请记住,您以后仍然可以决定使用 Kubernetes(或替代方案),因此第一步应该是了解如何将服务包装在 Docker 容器中。

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

我个人倾向于将所有东西都包装在 Docker 中,但仅出于一个原因:保持主机清洁。如果您达到了一切都在 Docker 中运行的地步,您将有更多的自由来选择服务可以运行的位置,并且您可以更轻松地将容器移动到其他主机。

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

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

于 2015-12-22T14:21:25.230 回答
0

您可以通过创建这样的网络来为容器提供来自子网的自己的 IP:

docker network create \
  --driver=bridge \
  --subnet=135.181.x.y/28 \
  --gateway=135.181.x.y+1 \
  network

您的网关是您的子网的 IP + 1 所以如果我的子网是123.123.123.123那么我的网关应该是123.123.123.124

不幸的是,我还没有弄清楚如何让容器从它们自己的 ip 向公众显示,目前它们显示为专用服务器的 ip。如果您知道我该如何解决,请告诉我。不过,我可以使用它的 ip 访问容器。

于 2021-01-14T21:45:16.753 回答