docker网络host模式,docker主机网络模式介绍 6

作者 : 慕源网 本文共1945个字,预计阅读时间需要5分钟 发布时间: 2021-12-12 共353人阅读

docker网络host模式介绍

当我们不想将容器的网络与主机隔离时,Docker 网络主机是 Docker 中使用的默认网络驱动程序,这意味着容器将共享主机的网络命名空间。在这种网络模式下,没有对容器进行 IP 地址分配。在这种模式下,诸如“-p”、“-publish”、“-P”和“–publish-all”之类的端口映射选项被忽略,这意味着我们不能为容器发布任何端口,或者换句话说,已发布使用主机网络模式时,Docker 守护进程会丢弃端口。

docker网络host模式,docker主机网络模式介绍 6

语法

$docker run -d --network host --name my_con nginx:alpine

docker网络host模式,docker主机网络模式介绍 6

如何在 docker 中使用网络host?

我们必须使用 ‘–network’ 选项并指定 ‘host’ 作为参数,以便在运行容器时使用主机网络驱动程序。正如我们现在所知,使用主机网络驱动程序时,容器不会获得任何分配的 IP 地址,这意味着如果我们将端口 80 绑定到正在运行的容器并且容器正在使用主机网络,那么在容器内运行的应用程序是可用的在主机 IP 地址的端口 80 上,这也意味着我们不能将同一端口绑定到两个不同的容器。主机网络模式用于优化性能,因为它不需要网络地址转换。此驱动程序仅适用于 Linux 主机,在 Docker Desktop for Mac、Docker Desktop for Windows 或 Docker EE for Windows Server 上不受支持。

我们也可以将这种网络模式用于 swarm 服务;但是,它包括一些额外的限制;例如,如果我们将一个服务容器绑定到 80 端口,那么 Docker 守护进程只会在给定的 swarm 模式下运行一个服务容器。

例子

让我们通过几个例子来理解它: –

示例#1

要在 Docker 中列出主机网络,我们可以使用以下命令:

$docker network ls --filter driver=host

docker网络host模式,docker主机网络模式介绍 6

说明: 在上面的快照中,我们可以看到我们有一个名为“host”的主机网络。

示例#2

我们必须在运行时使用以下命令将主机网络连接到容器:

$docker run -d --network host --name my_con nginx:alpine

docker网络host模式,docker主机网络模式介绍 6

说明:在上面的示例中,我们使用 ‘nginx:alpine’ Docker 映像创建了一个名为 ‘my_con’ 的容器并使用了主机网络。

示例 #3

让我们尝试使用以下命令创建一个新的主机网络,看看会发生什么。

$docker network create host2 --driver=host

docker网络host模式,docker主机网络模式介绍 6

说明:在上面的例子中,我们尝试创建一个名为’host2’的主机网络;但是,它不起作用,因为我们只能在本地创建一个主机网络。

场景:创建一个nginx容器,并尝试在不暴露端口的情况下从外部访问它。

第 1 步:首先,让我们使用名为“nginx:alpine”的 Docker 镜像创建一个容器,如下所示:

$docker run -d --network host --name my_nginx nginx:alpine

docker网络host模式,docker主机网络模式介绍 6

说明:在上面的示例中,我们创建了一个容器“my_nginx”并附加了主机网络。

第 2 步:让我们尝试从本地主机访问 80 端口上的 nginx。

$curl http://localhost:80

docker网络host模式,docker主机网络模式介绍 6

说明:在上面的快照中,我们可以看到 nginx 服务器可以在本地轻松访问 80 端口,而无需将主机的任何端口暴露给容器。这是因为主机网络直接与容器共享。

第 3 步:现在,让我们创建另一个 nginx 容器,看看是否可行。

$docker run -d --network host --name my_nginx2 nginx:alpine

docker网络host模式,docker主机网络模式介绍 6

说明:在上面的快照中,我们尝试创建另一个名为“my_nginx2”的容器;但是,如果我们检查容器状态,它处于退出状态,如下面的快照所示: –

docker网络host模式,docker主机网络模式介绍 6

让我们检查日志以了解原因。因此,在下面的快照中,它显示“正在使用的地址”,因为端口 80 已被正在运行的容器使用。

docker网络host模式,docker主机网络模式介绍 6

注意:当使用主机网络模式时,我们不能运行多个容器在同一个端口上侦听;但是,我们可以运行一个侦听不同端口的容器。

好处

  1. 由于它绕过网络地址转换,因此提高容器的性能很有用。
  2. 我们也可以在 Docker swarm 中使用这个网络,方法是将选项“–network host”传递给“docker service create”。
  3. 如果我们必须运行一个需要处理大量端口的容器,因为没有为每个端口创建“userland-proxy”。

结论

Docker 主机网络是消除容器和主机之间隔离的驱动程序。这取决于我们何时根据需要使用此网络。还有其他网络驱动程序,如网桥、覆盖、macvlan 和无。

推荐文章

这是 docker主机网络模式的指南。在这里,我们将通过示例讨论如何在 docker 中使用网络host。

本文是docker快速入门教程系列的一部分您也可以查看以了解更多信息 –


慕源网 » docker网络host模式,docker主机网络模式介绍 6

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录