docker网络host模式,docker主机网络模式介绍 6
docker网络host模式介绍
当我们不想将容器的网络与主机隔离时,Docker 网络主机是 Docker 中使用的默认网络驱动程序,这意味着容器将共享主机的网络命名空间。在这种网络模式下,没有对容器进行 IP 地址分配。在这种模式下,诸如“-p”、“-publish”、“-P”和“–publish-all”之类的端口映射选项被忽略,这意味着我们不能为容器发布任何端口,或者换句话说,已发布使用主机网络模式时,Docker 守护进程会丢弃端口。
语法
$docker run -d --network host --name my_con nginx:alpine
如何在 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
说明: 在上面的快照中,我们可以看到我们有一个名为“host”的主机网络。
示例#2
我们必须在运行时使用以下命令将主机网络连接到容器:
$docker run -d --network host --name my_con nginx:alpine
说明:在上面的示例中,我们使用 ‘nginx:alpine’ Docker 映像创建了一个名为 ‘my_con’ 的容器并使用了主机网络。
示例 #3
让我们尝试使用以下命令创建一个新的主机网络,看看会发生什么。
$docker network create host2 --driver=host
说明:在上面的例子中,我们尝试创建一个名为’host2’的主机网络;但是,它不起作用,因为我们只能在本地创建一个主机网络。
场景:创建一个nginx容器,并尝试在不暴露端口的情况下从外部访问它。
第 1 步:首先,让我们使用名为“nginx:alpine”的 Docker 镜像创建一个容器,如下所示:
$docker run -d --network host --name my_nginx nginx:alpine
说明:在上面的示例中,我们创建了一个容器“my_nginx”并附加了主机网络。
第 2 步:让我们尝试从本地主机访问 80 端口上的 nginx。
$curl http://localhost:80
说明:在上面的快照中,我们可以看到 nginx 服务器可以在本地轻松访问 80 端口,而无需将主机的任何端口暴露给容器。这是因为主机网络直接与容器共享。
第 3 步:现在,让我们创建另一个 nginx 容器,看看是否可行。
$docker run -d --network host --name my_nginx2 nginx:alpine
说明:在上面的快照中,我们尝试创建另一个名为“my_nginx2”的容器;但是,如果我们检查容器状态,它处于退出状态,如下面的快照所示: –
让我们检查日志以了解原因。因此,在下面的快照中,它显示“正在使用的地址”,因为端口 80 已被正在运行的容器使用。
注意:当使用主机网络模式时,我们不能运行多个容器在同一个端口上侦听;但是,我们可以运行一个侦听不同端口的容器。
好处
- 由于它绕过网络地址转换,因此提高容器的性能很有用。
- 我们也可以在 Docker swarm 中使用这个网络,方法是将选项“–network host”传递给“docker service create”。
- 如果我们必须运行一个需要处理大量端口的容器,因为没有为每个端口创建“userland-proxy”。
结论
Docker 主机网络是消除容器和主机之间隔离的驱动程序。这取决于我们何时根据需要使用此网络。还有其他网络驱动程序,如网桥、覆盖、macvlan 和无。
推荐文章
这是 docker主机网络模式的指南。在这里,我们将通过示例讨论如何在 docker 中使用网络host。
本文是docker快速入门教程系列的一部分您也可以查看以了解更多信息 –
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!