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