作为一名网页设计师,我一直使用 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 主机访问。据我所知,我有几种可能的方法:
- 将主机到主机专用适配器的连接路由到 docker0 接口
- 以某种方式找到从主机连接到 docker0 接口的方法,或者
- 以某种方式找到一种方法将容器连接到仅主机接口
我想知道其中哪一种方法对我来说是最可行的。
我不确定我的问题是否足够清楚。请告诉我是否应该提供更多信息以使这个问题可以回答。
答案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 别名。