使用主机网络联网

本系列教程介绍如何将 直接连接到 Docker 主机的网络,无需网络隔离。对于其他 网络主题,请参阅概述

目标

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

先决条件

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

  • 网络驱动程序仅适用于 Linux 主机,但在 Docker Desktop 版本 4.29 上作为测试版功能提供 以及更高版本的 Mac、Windows 和 Linux。要启用此功能,请导航到 Settings (设置) 中的 Resources (资源) 选项卡,然后在 Network (网络) 下选择 Enable host networking(启用主机网络)。host

程序

  1. 创建容器并将其作为分离的进程启动。该选项表示在容器退出/停止后将其删除。该标志表示启动容器分离(在后台)。--rm-d

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

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

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

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

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

    docker container stop my_nginx
    

其他联网教程