使用主机网络联网

本系列教程介绍如何将 直接连接到 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(启用主机网络)。

程序

  1. 创建容器并将其作为分离的进程启动。这--rmoption 表示在容器退出/停止后将其删除。这-dflag 表示启动容器分离(在后台)。

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

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

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

      $ ip addr show
      
    • 使用netstat命令。你 需要使用sudo因为该进程归 Docker 守护程序用户所有 否则您将无法看到其名称或 PID。

      $ sudo netstat -tulpn | grep :80
      
  4. 停止容器。它将在启动时使用--rm选择。

    docker container stop my_nginx
    

其他联网教程