使用主机网络进行网络连接
目录
本系列教程涉及直接绑定到Docker主机网络的独立容器的网络配置,没有网络隔离。关于其他网络主题,请参阅概述。
目标
本教程的目标是启动一个直接绑定到Docker主机上端口80的nginx容器。从网络的角度来看,这与nginx进程直接在Docker主机上运行而不是在容器中运行的隔离级别相同。然而,在所有其他方面,如存储、进程命名空间和用户命名空间,nginx进程与主机是隔离的。
先决条件
此过程要求Docker主机上的80端口可用。要使Nginx监听不同的端口,请参阅关于
nginx镜像的文档host网络驱动程序仅在 Linux 主机上工作,但在 Docker Desktop 4.29 及更高版本中,作为 beta 功能 可用于 Mac、Windows 和 Linux。要启用此功能,请导航到 设置 中的 资源 选项卡,然后在 网络 下选择 启用主机网络。
流程
创建并启动容器作为一个分离的进程。
--rm选项意味着一旦容器退出/停止就将其移除。-d标志意味着以分离模式(在后台)启动容器。$ docker run --rm -d --network host --name my_nginx nginx通过浏览访问Nginx http://localhost:80/.
使用以下命令检查您的网络堆栈:
检查所有网络接口,并确认没有创建新的接口。
$ ip addr show验证哪个进程绑定到端口80,使用
netstat命令。你需要使用sudo,因为该进程由Docker守护进程用户拥有,否则你将无法看到其名称或PID。$ sudo netstat -tulpn | grep :80
停止容器。由于它是使用
--rm选项启动的,因此它将自动被移除。docker container stop my_nginx