网站搜索

如何在 Docker Compose 中使用主机网络


Docker Compose 是 Docker 解决方案的基础部分之一,主要用于配置多个容器应用的服务。这些 Docker 容器托管并管理在不同的网络上,例如桥接网络、主机网络或用户创建的网络,这些容器在这些网络上共享其网络命名空间。

本文将描述如何利用Docker Compose使用主机网络。

如何在docker-compose中使用主机网络?

在 Docker 中,“–net=<“network-mode ”>” 选项用于在 “docker run” 命令中指定容器的网络模式。然而,在 docker-compose 中,用户必须通过使用 “network_mode” 键在 “docker-compose.yml” 文件中配置主机网络。

要在 Docker compose 中使用主机网络,请查看列出的步骤。

第一步:生成程序文件

首先,创建一个简单的 HTML 程序文件“index.html”,并将提供的代码粘贴到该文件中:

<html>
 <head>
  <style>
   body{
    background-color: black;
   }
   h1{
    color:aquamarine;
    font-style: italic;
   }
  </style>
 </head>
 <body>
  <h1>Hello! Welcome to Linuxhint Tutorial</h1>
 </body>
</html>

步骤 2:创建 Dockerfile

创建Dockerfile并将以下编码指令复制到文件中。这里,这些指令包含以下细节:

  • “FROM” 指定容器的基础镜像。
  • “复制”正在将源文件复制到容器路径。
  • “ENTRYPOINT” 设置容器的执行点或默认值:
FROM nginx:latest
COPY index.html /usr/share/nginx/html/index.html
ENTRYPOINT ["nginx", "-g", "daemon off;"]

步骤 3:在 Docker Compose 中配置服务

接下来,创建另一个文件 "docker-compose.yml",该文件将配置服务以在主机网络上运行 HTML 程序文件。之后,将以下配置复制到 "docker-compose.yml" 文件中:

version: "3"
services:

  web:

    build: .     container_name: html-container     network_mode: "host"

这些说明包括:

  • 用于配置服务的“services”键。例如,我们已经配置了“web”服务。
  • “build” 关键字指定 “web” 服务将使用 Dockerfile 指令。
  • “container_name” 定义了 Web 服务将管理和执行的容器名称。
  • “network_mode” 关键用于将网络分配给容器。要使容器使用主机网络,请将 “network_mode” 的值设置为 “host”:

步骤 4:创建并启动容器

接下来,执行 “docker-compose up” 命令以在 Docker 容器中创建并运行 “web” 服务。“-d” 选项用于将容器作为后台服务或在后台运行:

> docker-compose up -d

步骤 5:列出组成容器

列出所有容器,并验证容器是否已创建并启动。

> docker-compose ps -a

步骤6:验证

验证容器是否在主机上运行,通过命令“docker inspect <cont-name>”检查容器:

> docker inspect html-container

在这里,你可以看到我们的容器正在运行在主机网络上:

或者,为了验证,你可以访问“localhost”,查看服务是否在主机上运行:

上述输出表明我们已经成功使用了 Docker Compose 的主机网络.

结论

要在 Docker Compose 中使用主机网络,可以在 "docker-compose.yml" 文件中配置主机网络。为此,首先创建 "docker-compose.yml" 文件,配置您的 Web 服务,并将 "network_mode" 键的值设置为 "host"。本文演示了如何在 Docker Compose 中利用主机网络。