关于在虚拟化 Ubuntu 服务器上连接 Docker 容器的问题

关于在虚拟化 Ubuntu 服务器上连接 Docker 容器的问题

作为一名网页设计师,我一直使用 VirtualBox 为我的项目设置临时工作服务器。最近,我一直在尝试减少笔记本电脑上的虚拟机数量(由于 SSD 容量有限),我认为学习和使用 Docker 可能对系统存储、已完成工作的部署以及未来技能组合有益。到目前为止,除了 NAT 之外,我还一直使用主机专用适配器从我的主机(通常是 Windows)连接到虚拟机中的 APM 服务器。

以下是我通常使用的 /etc/network/interfaces 设置:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

# VBOX Host-only adapter
auto eth1
iface eth1 inet static
  network    192.168.56.0
  address    192.168.56.80
  netmask    255.255.255.0

我正在考虑使用 IP 别名来为仅主机适配器 ( 192.168.56.81, 192.168.56.82...) 分配更多 IP,并将它们路由到每个容器,每个容器将运行我的一个项目。看起来 Docker 有自己的网络接口,,docker0无法从 VirtualBox 主机访问。据我所知,我有几种可能的方法:

  1. 将主机到主机专用适配器的连接路由到 docker0 接口
  2. 以某种方式找到从主机连接到 docker0 接口的方法,或者
  3. 以某种方式找到一种方法将容器连接到仅主机接口

我想知道其中哪一种方法对我来说是最可行的。
我不确定我的问题是否足够清楚。请告诉我是否应该提供更多信息以使这个问题可以回答。

答案1

在我看来,就您的使用而言,您不应该深入研究 docker 网络的疯狂之处。

我建议您在运行容器时使用端口映射。

例如,假设您已apache通过 Dockerfile 在 docker 中创建了一个镜像。当您想要运行此容器时,请使用-p映射端口的选项:

sudo docker run -d -p=80:80 -p=443:443 -P apache:latest

这样,本地的80端口就会映射到这个容器的80端口上。

因此,通过访问http://127.0.0.1您将在浏览器中访问您的容器。

如果端口 80 已经在本地使用,则可以使用例如端口 8080:-p 8080:80然后访问http://127.0.0.1:8080

如果您有多个项目,则可以使用多个端口或在 apache 容器内使用虚拟主机并在/etc/hosts主机中使用 dns 别名。

相关内容