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