【问题标题】:Port forwarding with docker for wordpress使用 docker 为 wordpress 进行端口转发
【发布时间】:2015-06-14 16:43:36
【问题描述】:
我是 docker 新手。我按照https://www.youtube.com/watch?v=Pe6a8Jbvi9E 此处的教程使用 docker 创建了一个 WordPress 站点。他正在使用以下命令解释端口转发,
docker run --link=my_mysql:mysql -p 80:80 -d wordpress
据我了解,这会将主机 80 端口中的所有请求重定向到容器的 80 端口。但是这将如何与mysql的3306端口通信呢?而且在该教程中,没有为 wordpress 设置数据库详细信息,而不是从哪里获取 db 配置值?有人可以解释吗?抱歉,这是非常基本的问题。
【问题讨论】:
标签:
mysql
wordpress
docker
【解决方案1】:
但是这将如何与mysql的3306端口通信呢?
wordpress 容器将与mysql 容器通信,因为这是链接所允许的:(请参阅Linking Containers Together)
链接允许容器相互发现并将有关一个容器的信息安全地传输到另一个容器。设置链接时,您会在源容器和接收容器之间创建管道。
所以端口 3306不暴露给主机(就像 80 端口一样),但它对wordpress 容器可见。
Docker 在容器之间创建了一个安全隧道,不需要在容器外部暴露任何端口;您会注意到,当我们启动 db 容器时,我们没有使用 -P 或 -p 标志。
这是链接的一大好处:我们不需要将源容器(此处为 mysql 数据库)暴露给网络。
Docker为源容器公开的每个端口定义一组环境变量。
每个变量都有一个唯一的前缀,格式为:
<name>_PORT_<port>_<protocol>
此前缀中的组件是:
-
--link参数中指定的别名<name>(例如mysql)
-
<port> 号码暴露
-
<protocol> 是 TCP 或 UDP