迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 > Docker >

使用 Docker 网络主机命令

作者:迹忆客 最近更新:2023/04/17 浏览次数:

Docker 容器通过利用在安装 Docker 期间创建的网络驱动程序来工作。 我们可用的默认驱动程序包括网桥和主机网络。

当我们在不指定网络的情况下创建容器时,它们会被添加到桥接网络中,如果我们想向主机网络或自定义网络添加网络命令,我们使用 --network 命令。

在本文中,我们将学习如何使用 --network 命令将容器添加到主机网络。 如果我们不使用此命令指定网络,我们还将了解如何将容器添加到默认网络。


创建 Nginx 项目

打开 WebStorm IDEA 并选择文件 > 新建 > 项目。 在打开的窗口中,选择 Empty Project 并将项目名称从 untitled 更改为 docker-network-host 或使用任何首选名称。

最后,按标有创建的按钮生成项目。

在当前文件夹中创建一个名为 index.html 的文件,并将以下代码复制并粘贴到该文件中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>Welcome to docker networking !</h1>
</body>
</html>

在这个文件中,我们创建了一个简单的网页,当我们访问容器中运行的应用程序时,该网页会显示一个标题。 这将有助于验证我们的容器是否正在运行 Nginx 应用程序。


定义镜像

创建一个名为 Dockerfile 的文件,并将以下指令复制并粘贴到该文件中。 请注意,我们通常使用具有此名称的文件从现有图像创建自定义图像。

FROM nginx:alpine
ADD . /usr/share/nginx/html
  1. FROM - 设置基础图像,使用后续说明在其上创建我们的自定义图像。
  2. ADD - 将当前文件夹中的文件和文件夹复制到图像文件系统目标 /usr/share/nginx/html。

构建镜像

使用上面定义的 Dockerfile 构建我们的自定义图像。 使用键盘快捷键 ALT+F12 打开一个新的终端窗口,并使用此命令构建映像。

~/WebstormProjects/docker-network-host$ docker build --tag docker-network-host:latest .

该命令依次执行Dockerfile创建带有标签的镜像,我们可以在终端窗口查看每条正在运行的指令,如下。

=> [1/2] FROM docker.io/library/nginx:alpine@sha256:082f8c10bd47b6acc8ef15ae61ae45dd8fde0e9f389a8b5cb23c37408642bf5d               0.1s
 => => resolve docker.io/library/nginx:alpine@sha256:082f8c10bd47b6acc8ef15ae61ae45dd8fde0e9f389a8b5cb23c37408642bf5d               0.1s
 => CACHED [2/2] ADD . /usr/share/nginx/html

在默认网络驱动程序中运行容器

要在默认网络中运行我们应用程序的容器,请在终端窗口中执行以下命令。 请注意,此容器将添加到桥接网络中。

~/WebstormProjects/docker-network-host$ docker run --name docker-network-bridge-test -d -p 8000:80 docker-network-host:latest

此命令运行一个名为 docker-network-bridge-test 的容器,该容器在容器中侦听端口 80 并在主机上公开端口 8000。 要验证此容器是否已添加到桥接网络,请执行以下命令来检查桥接网络。

~/WebstormProjects/docker-network-host$ docker network inspect bridge

输出:

[
    {
        "Name": "bridge",
        "Id": "45773c7633cf28baa742ceca9c054a8dd6b4ea609dd9944d7ae12bdb57e86bcd",
        "Created": "2022-10-06T07:53:45.935633743Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "5e452da9b047ce94ff23b4841d1cb3358f34b037ef566c2f12a9eb57012a5f85": {
                "Name": "docker-network-bridge-test",
                "EndpointID": "d3491eb0c518d91be71b170e8ca0a077e07781bffbe20f3e1a1fd415eef9c288",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

在返回的 JSON 中,Containers 属性有一个名为 docker-network-bridge-test 的容器,并分配了一个 MacAddress 和一个 IPv4Address。 这与本节开头创建的容器相同。

要在浏览器上提供此应用程序,请向 localhost:8000 (http://localhost:8000/) 发出请求并确保它返回包含文本 Welcome to docker networking ! 的标题。


在主机网络中运行容器

术语主机网络意味着容器在我们主机的网络上运行,因为主机网络无法容器化容器网络。 要在主机网络中运行容器,请在终端窗口中执行以下命令。

~/WebstormProjects/docker-network-host$ docker run --rm -d --network host --name docker-network-host-test docker-network-host:latest

此命令使用值为 host 的 --network 命令在主机网络中运行名为 docker-network-host-test 的容器。 要验证此容器是否已添加到主机网络,请在终端窗口中执行以下命令。

~/WebstormProjects/docker-network-host$ docker network inspect host

输出:

[
    {
        "Name": "host",
        "Id": "4ce9d3806cd88f9d9ea446272f4338f7b1f5e7098d4d0bc2a11090c1759d1880",
        "Created": "2022-09-19T07:51:50.247290701Z",
        "Scope": "local",
        "Driver": "host",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": []
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "22d15c7eee861ec7fdfd22936c30dfe1d17b2dde52ada93256f3e30943a3ed80": {
                "Name": "docker-network-host-test",
                "EndpointID": "7bd01907c8b86a881b86ae9e9c8ad8c1d3aa9f0583adebb7d41ae15bd565fabe",
                "MacAddress": "",
                "IPv4Address": "",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

在返回的 JSON 中,Containers 属性有一个名为 docker-network-host-test 的容器,请注意,在这种情况下,该容器没有分配 MacAddress 或 IPv4Adress,因为它在主机网络上运行。 这与本节开头创建的容器相同。

要在浏览器上提供此应用程序,请向 localhost:80 (http://localhost:80/) 发出请求并确保它返回包含文本 Welcome to docker networking ! 的标题。 但是,请确保主机网络上的端口 80 已打开以接受请求。


总结

在文中,我们学习了如何在默认网络驱动桥和主机网络驱动上运行容器。 请注意,我们使用 --network 命令在默认网络以外的其他网络上添加容器。

为确保您的应用程序在新网络上运行,请确保使用的端口已打开以供连接,并且其他进程未使用该端口。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Linux 中托管 Docker Internal

发布时间:2023/04/18 浏览次数:139 分类:Docker

Docker 允许开发人员通过将应用程序包装在称为容器的标准化单元中来高效地构建、测试和部署应用程序。 在使用 Docker 容器时,您可能会遇到需要将容器与主机连接的场景。

在 Docker 中设置工作目录

发布时间:2023/04/18 浏览次数:82 分类:Docker

在 Docker 中,我们可以通过编辑 Dockerfile 并添加密钥 WORKDIR 来设置我们的工作目录。本文将讨论在 Docker 中更改我们当前和默认的工作目录。

在 Docker 容器中公开多个端口

发布时间:2023/04/18 浏览次数:143 分类:Docker

Docker 容器使用端口来实现万维网上不同设备之间的通信。 在本篇文章中,我们将学习如何使用 Nginx 应用程序在 Docker 容器中公开多个端口。

将用户添加到 Docker 容器

发布时间:2023/04/18 浏览次数:187 分类:Docker

在本文中,我们将学习如何通过实现返回产品数组的 Express 应用程序将用户添加到 Docker 容器。

清除 Docker 容器日志

发布时间:2023/04/18 浏览次数:181 分类:Docker

本文介绍了我们可以用来清除 docker 容器中日志的不同方法。日志是应用程序在特定事件或状态发生时记录的信息,它们帮助我们监控应用程序并采取必要的措施。

Docker 中的守护进程日志位置

发布时间:2023/04/18 浏览次数:175 分类:Docker

本文将讨论守护进程事件以及我们通常可以在哪里找到每个操作系统 (OS) 的守护进程日志。

Dockerfile 中 COPY 和 ADD 命令的区别

发布时间:2023/04/18 浏览次数:158 分类:Docker

在 Dockerfile 中,我们可以使用 COPY 或 ADD 命令复制这些文件。 这些命令在功能上是相同的; 但是,存在一些差异。本文介绍了 Dockerfile 中 COPY 和 ADD 命令之间的区别。

Docker 中的 --rm 标志

发布时间:2023/04/18 浏览次数:77 分类:Docker

本文介绍如何在 docker 中使用 --rm 命令。 此外,它还提供了使用命令的优势。

在 Docker 中设置环境变量

发布时间:2023/04/18 浏览次数:107 分类:Docker

本文教大家如何设置环境变量以及如何在必要时从正在运行的容器访问变量。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便