使用主机网络进行联网

本系列教程涉及网络独立容器,这些容器直接绑定到 Docker 主机的网络,没有网络隔离。有关其他网络主题,请参阅概述

目标

本教程的目标是启动一个nginx直接绑定到 Docker 主机上的端口 80 的容器。从网络角度来看,这与nginx进程直接在 Docker 主机上运行而不是在容器中运行的隔离级别相同。然而,在所有其他方面,例如存储、进程命名空间和用户命名空间,nginx进程与主机是隔离的。

先决条件

  • 此过程要求 Docker 主机上的端口 80 可用。要使 Nginx 侦听不同的端口,请参阅 该映像的文档nginx

  • host网络驱动程序仅适用于 Linux 主机,但 在适用于 Mac、Windows 和 Linux 的 Docker Desktop 版本 4.29 及更高版本上可作为Beta 功能使用。要启用此功能,请导航至 “设置”中的“开发中的功能”选项卡,然后选择“启用主机网络”

程序

  1. 创建容器并将其作为独立进程启动。该--rm选项意味着容器退出/停止后将其移除。该-d标志意味着以分离方式启动容器(在后台)。

    $ docker run --rm -d --network host --name my_nginx nginx
    
  2. 通过浏览 http://localhost:80/来访问 Nginx 。

  3. 使用以下命令检查您的网络堆栈:

    • 检查所有网络接口并验证是否未创建新的网络接口。

      $ ip addr show
      
    • 使用命令验证哪个进程绑定到端口 80 netstat。您需要使用,sudo因为该进程由 Docker 守护程序用户拥有,否则您将无法看到其名称或 PID。

      $ sudo netstat -tulpn | grep :80
      
  4. 停止容器。当使用该选项启动时,它将被自动删除--rm

    docker container stop my_nginx
    

其他网络教程