我在 Digital Ocean 上买到了最便宜的 VPS。
我跟着本指南,一切都很顺利。
但是现在我想在同一个 IP 上提供多个名称服务器,所以我需要弄清楚它是如何工作的。我基本上对 docker 一无所知。
我读到我可以使用
./launcher ssh 我的容器
我这样做了,并且它有效,我可以看到 nginx 配置等等。
现在我的问题是:docker 里面的 nginx 如何与公共请求交互?
我的意思是,我确实在本地 VPS 上没有找到 Web 服务器,无论是 apache 还是 nginx......那么来自 docker 的 nginx 是否直接响应?
编辑:我确实有一个 Docker0 接口
这是我的 iptable
root@droplet0:~# iptables -L -v
Chain INPUT (policy ACCEPT 63619 packets, 21M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
77364 33M ACCEPT tcp -- !docker0 docker0 anywhere 172.17.0.19 tcp dpt:http
10 400 ACCEPT tcp -- !docker0 docker0 anywhere 172.17.0.19 tcp dpt:ssh
40958 25M ACCEPT all -- any docker0 anywhere anywhere ctstate RELATED,ESTABLISHED
104K 35M ACCEPT all -- docker0 !docker0 anywhere anywhere
0 0 ACCEPT all -- docker0 docker0 anywhere anywhere
Chain OUTPUT (policy ACCEPT 79829 packets, 17M bytes)
pkts bytes target prot opt in out source destination
我不明白,Docker0 有另一个 IP(无论如何总是在同一个子网中),那么流量被转发给谁?主机和 Docker 之间有第三方吗?
答案1
由于不知道相关信息,我无法肯定地说,但听起来很可能是 Docker 中运行的 nginx 正在提供该页面。我首先建议您熟悉 Docker:https://www.docker.com/tryit/
请记住,对 Docker 容器的更改不是持久的。您必须将当前状态保存在镜像中。当您使用新镜像启动容器时,它将包含您的更改。更新镜像配置的最简单方法之一是使用 Dockerfile 中的现有配置http://docs.docker.com/reference/builder/。您可以像往常一样创建配置和网页文件,然后使用 ADD 指令将它们放置在镜像中的正确位置。当您启动此新镜像时,nginx 将看到这些网页的配置并加载它们。
Docker 网络默认创建一个名为 Docker0 的接口。它可以将 Docker 容器上的端口暴露给主机的接口,因此很可能暴露在主机的端口 80 上。docker 容器可以使用 Docker 接口上的任何端口。它们可以像使用防火墙的 NAT 转换一样进行映射。