如何在 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 中利用主机网络。





