使用主机网络进行网络连接

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

目标

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

先决条件

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

  • host 网络驱动程序仅适用于 Linux 主机,并且是 Docker Desktop 4.34 及更高版本中的一个可选功能。要在 Docker Desktop 中启用此功能,请导航到 设置 中的 资源 选项卡,然后在 网络 下选择 启用主机网络

步骤

  1. 以分离进程方式创建并启动容器。--rm 选项表示容器退出/停止后就将其删除。-d 标志表示以后台(分离)模式启动容器。

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

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

    • 检查所有网络接口,并验证没有创建新的接口。

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

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

    docker container stop my_nginx
    

其他网络教程

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.