可用于Docker网络的单主机网络有两种类型:“主机”和“桥”网络。单主机网络意味着它们的影响对于每个单独的主机都是局部的。
在主机网络的情况下,特定的Docker容器可以直接使用主机的网络来发送和接收数据包。对于网桥网络,它需要端口映射才能进行通信。
为了更好地理解它们,让我们在主机网络的帮助下创建一个nginx容器。在创建nginx容器之前,让我们列出所有可用的网络。
sudo docker network ls
您会发现一个网络,其名称为host,驱动程序名称为host,范围为local。尝试使用以下命令检查该网络。
sudo docker network inspect host
您将获得一个json列表,其中包含有关网络的所有详细信息。请注意,容器对象最初是空的。
现在,我们将使用主机网络创建一个nginx Docker容器。
sudo docker container run −d −−network host −−name nginx01 nginx−alpine
在使用主机网络时,我们不指定端口映射,因为在Linux / unix系统上运行时,主机网络驱动程序会自动使用“ eth0”。
使用以下命令获取容器ID。
sudo docker inspect <container−id>
在浏览器内部,复制此IP地址,然后您可以验证nginx容器是否已成功运行。
要检查主机网络是否正在使用端口映射,请列出容器以获取端口的详细信息。
sudo docker container ls
您会发现nginx容器的端口列表为空。
现在,使用以下命令检查主机网络。
sudo network inspect host
您会发现现在容器的列表中包含nginx容器详细信息。这验证了Nginx容器现在正在主机网络上运行。
现在让我们使用不带端口映射的网桥驱动程序创建另一个nginx容器。
sudo docker run −d −−network bridge −−name nginx02 nginx−alpine
现在,执行docker list命令以获取容器的详细信息。
sudo docker container ls
您会发现在nginx02容器的端口部分内,您将找到一个端口号以及那里列出的协议。现在,由于在使用网桥网络驱动程序创建容器时尚未指定端口映射,因此您将无法通过本地计算机访问它。若要进行验证,请尝试通过粘贴容器的IP地址通过浏览器访问它。
sudo docker inspect <container−id>
将IP地址复制到您的浏览器,您会发现它引发了错误,因为我们没有指定端口映射。
现在,我们将停止并删除nginx02容器,并创建另一个容器,但这一次指定端口映射。
sudo docker stop nginx02 sudo docker container rm nginx02
删除nginx容器后,最好使用端口映射和网桥网络驱动程序创建另一个具有相同名称的网络。
sudo docker container run −d −−network bridge −−name nginx02 −p 80:80 nginx:alpine
现在,我们使用网桥网络驱动程序通过映射端口号80创建了nginx02容器。执行container list命令以进行验证。
sudo docker container ls
现在,使用以下命令找出nginx02容器的IP地址。
sudo docker inspect <container−id>
复制IP地址并将其粘贴到浏览器中。现在,您将能够使用浏览器访问nginx容器。检查网桥网络以验证相同
sudo docker network inspect bridge
总而言之,在本文中,我们讨论了如何使用主机和桥网络驱动程序创建nginx容器。然后,我们看到了两者之间的差异。主机驱动程序自动访问eth0端口,并且那里不需要端口映射。但是,网桥网络驱动程序需要端口映射才能从外部访问它们。
我有一个 docker 容器,我想给它 --network=host AND -。我需要连接到主机网络才能将主机数据狗服务器 (UDP) 和 网络用于其数据库。 尝试添加这两个网络会导致。 知道正确的处理方法吗?
问题内容: 我正在尝试获得以下相当基本的(或我认为)联网设置,以使用Docker 1.9进行工作: 我有多个运行服务的容器,例如一个容器和一个容器(可能有两个以上)。 这些容器通过网络相互连接。 我希望它们可以使用唯一的主机名来寻址(即Python容器应该能够对PostgreSQL容器执行ping操作)。 遵循本教程(https://docs.docker.com/engine/userguide
本文向大家介绍Docker网络上的用户定义网桥,包括了Docker网络上的用户定义网桥的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将讨论为什么应该在默认桥网络上使用用户定义的桥网络。我们还将使用实际示例进行演示。 如果您使用用户定义的网桥进行容器网络连接,则该网络中的所有容器会自动将所有必需的端口公开给彼此,而不是公开给外部世界。这增加了容器之间的互操作性,并提供了更好的隔离性。 使用
我有一个10.101的服务器VLAN。10.0/24,我的Docker主机是10.101。10.31. 如何在Docker主机(VM)上配置网桥网络,以便所有容器都可以直接连接到LAN网络,而无需在默认的172.17上重定向端口。0.0/16? 我尝试过搜索,但到目前为止我找到的所有howto都导致SSH会话丢失,我不得不从控制台进入VM以恢复我执行的步骤。
我正在构建包括两个容器的docker-comment服务。其中一个容器(节点)被设计成支持自动发现机制,并且需要成为主机局域网的一部分(因为我需要多播UDP包由局域网路由器处理,而不是内置的docker路由器)。 虽然docker-compose.yml中的network_mode:主机完美地做到了这一点,但我需要此服务也可以通过默认的docker-comment网络(如:超文本传输协议://节点
有没有办法解决这个问题? 操作系统:Debian 8 Docker版本:1.9.0,构建76d6bc9 ifconfig输出: