链接 Docker 容器

链接 Docker 容器

我必须将我的 WordPress 安装迁移到我自己的服务器才能使 SSL 正常工作。它最初位于 GoDaddy 共享主机上,不允许安装外部 SSL 证书。

由于有点偏执并了解安全性,我想在 Docker 容器内运行服务,以限制最坏情况下的损害。

我不确定如何连接 Docker 容器。例如,我有一个负责运行 MySQL/MariaDB 的 Docker 容器,但我不知道如何与另一个运行 FastCGI 的 Docker 容器共享该服务,该容器托管并执行我的 WordPress PHP 代码。

我的 Web 服务器(NGINX)当前在 Docker 容器之外运行,将事物代理到 Docker 容器上的公开端口不会有任何问题,但是 FastCGI 服务器(即 PHP)如何能够访问 MySQL容器?

有没有详细说明如何在 Docker 中配对多个独立服务的指南?

答案1

Docker 容器的工作方式是默认情况下它们是隔离的,除非您以其他方式设置它们。

要回答您的问题,您可以打开所需的端口,并通过这些端口链接容器,因此它们仅通过您指定的端口进行通信。

在 Dockerfile 中指定时,此命令称为“EXPOSE”:http://docs.docker.io/reference/builder/#expose

EXPOSE  41000

启动容器时,您也可以在容器启动时传递您想要公开的端口(覆盖原始 Dockerfile 中指定的内容):

sudo docker run -p 41000:41000 -d <your username>/<your image name>

-p, --publish=[] 将容器的端口发布到主机,格式为:ip:hostPort:containerPort | ip::容器端口 | hostPort:containerPort(使用“docker port”查看实际映射)

另请参阅链接,http://docs.docker.io/use/working_with_links_names/#working-with-links-names


有关 WordPress 和 Docker 的进一步阅读:

答案2

实际上Docker并没有做任何虚拟化,它只是一个处理镜像并使用LXC容器虚拟化来运行它们的工具。我猜您实际上是在这里寻找 LXC 及其功能。 LXC可以做虚拟联网,MySQL可以通过网络访问。您唯一需要的是将构建块连接在一起;)。

在典型设置中,每个主机都有自己的 IP 地址和一组开放端口,并且每个主机都可以通过虚拟网络访问其他主机的 TCP/IP 服务。安全性由 Linux 内核处理。处理安全性的一种方法是基于旧式 iptables 的防火墙。但可能还有其他基于selinux标签的方式。

相关内容