使用主机网络进行网络连接
目录
本系列教程介绍的是直接绑定到 Docker 主机网络的独立容器网络,没有网络隔离。有关其他网络主题,请参阅概述。
目标
本教程的目标是启动一个直接绑定到 Docker 主机端口 80 的nginx
容器。从网络角度来看,这与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
通过浏览到http://localhost:80/来访问 Nginx。
使用以下命令检查您的网络堆栈
检查所有网络接口,并验证没有创建新的接口。
$ ip addr show
使用
netstat
命令验证哪个进程绑定到端口 80。您需要使用sudo
,因为该进程由 Docker 守护程序用户拥有,否则您将无法看到其名称或 PID。$ sudo netstat -tulpn | grep :80
停止容器。由于它是使用
--rm
选项启动的,因此它将自动删除。docker container stop my_nginx