专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

Docker容器访问宿主机网络的方法

来源:小易整编  作者:小易  发布时间:2023-03-15 05:09
摘要:Docker容器访问宿主机网络的方法容器内部安装ping命令容器中安装ping工具:sudoapt-getupdate&&apt-getinstalliputils-pingroot@884631624f24:/# sudo apt-get...

Docker容器访问宿主机网络的方法

容器内部安装ping命令容器中安装ping工具:

sudo apt-get update && apt-get install iputils-ping

root@884631624f24:/# sudo apt-get update

root@884631624f24:/# apt-get install iputils-ping

测试Ping命令

root@884631624f24:/# ping www.baidu.com
PING www.a.shifen.com (112.80.248.75) 56(84) bytes of data.
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=1 ttl=52 time=11.3 ms
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=2 ttl=52 time=11.2 ms
^Z
[1]+  Stopped                 ping www.baidu.com
root@884631624f24:/#

方式一:使用宿主机IP

在安装Docker的时候,会在宿主机安装一个虚拟网关 docker0 ,我们可以使用宿主机在 docker0 上的IP地址来代替 localhost 。

首先,使用如下命令查询宿主机IP地址:

[root@VM-16-16-centos ~]# ip addr show docker0
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
group default 
    link/ether 02:42:3f:c5:b6:67 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:3fff:fec5:b667/64 scope link 
       valid_lft forever preferred_lft forever
[root@VM-16-16-centos ~]# 
[root@VM-16-16-centos ~]#

可以用172.17.0.1代替localhost访问宿主机

注意:不同系统下宿主机的IP是不同的,例如Linux下一般是 172.17.0.1 , macOS下一般是 192.168.65.1 ,并且这个IP还可以更改。所以使用IP配置 nginx.conf ,不能跨环境通用。

方式二:使用host网络

Docker容器运行的时候有 host 、 bridge 、 none 三种网络可供配置。默认是 bridge ,即桥接网络,以桥接模式连接到宿主机;host 是宿主网络,即与宿主机共用网络;none 则表示无网络,容器将无法联网。

当容器使用 host 网络时,容器与宿主共用网络,这样就能在容器中访问宿主机网络,那么容器的 localhost 就是宿主机的 localhost 。

在docker中使用 --network host 来为容器配置 host 网络:

docker run -d --name nginx --network host nginx

上面的命令中,没有必要像前面一样使用 -p 80:80 -p 443:443 来映射端口,是因为本身与宿主机共用了网络,容器中暴露端口等同于宿主机暴露端口。

使用host网络不需要修改 nginx.conf ,仍然可以使用 localhost ,因而通用性比上一种方法好。但是,由于 host 网络没有 bridge 网络的隔离性好,使用 host 网络安全性不如 bridge 高。

总结

  • 宿主机IP隔离性更好,但通用性不好。

  • host网络,通用性好,但带来了暴露宿主网络的风险。


本文地址:百科问答频道 https://www.neebe.cn/wenda/927380.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


百科问答
小编:小易整编
相关文章相关阅读
  • 无线WLAN网络测试的五个简单步骤分享

    无线WLAN网络测试的五个简单步骤分享

    在上篇文章跟各位网友分享“如何解决无线路由器网络自动断线?”了,相信大家对于无线WLAN的各个方面大家应该都有一些了解了。那么对于无线WLAN测试,有哪些判断标准呢?可能对大家来说都还有一些不清楚。那么本文将为大家列出5个简单的步骤帮助您来...

  • 虚拟网络连接怎么建立

    虚拟网络连接怎么建立

    当我们使用Win7系统时,因为某些原因需要建立虚拟网络连接,但是我们不知道如何操作怎么办?该如何才能创建好虚拟的网络连接呢?下面小编就为大家奉上一个图文并茂的教程。  1.右键点击桌面的“网络”->“属性”,打开“网络和共享中心”界面......

  • 宿主机是什么意思?

    宿主机是什么意思?

    概念上,宿主机是指拥有虚拟机环境的计算机。拥有宿主机后,用户可以在宿主机上安装多个虚拟机,每个虚拟机都有独立的操作系统及软硬件环境,各个虚拟机之间的相互访问性也会被有效控制,从而提高了软件开发和管理的效率。换句话说,宿主机指的就是一台计算...

  • 网络唤醒是什么意思?

    网络唤醒是什么意思?

    网络唤醒是通过特别的字符串或声音来激活睡眠状态中的计算机的机制。这项技术可以从远处让技术睡眠的计算机恢复正常功能,可以是本地或者远程,因此被人们所熟知。一旦某台计算机接收到正确的召唤信号,网络唤醒技术就会让计算机从睡眠模式转变为唤醒模式,...

  • ATM网络是什么意思?

    ATM网络是什么意思?

    ATM网络是ATM(以太网传输模式)网络,是一种以AsynchronousTransferMode(ATM)协议作为基础建立的数据传输网络。ATM网络是一种小体积、高带宽的数据传输网络,主要用于实时视频和音频的传输。它采用小...

  • 网络虚拟化是什么意思?

    网络虚拟化是什么意思?

    网络虚拟化是指通过构建虚拟网络环境来演示和模拟网络服务和基础结构。它允许安全地独立测试网络应用程序、网络服务和网络连接,而无需对物理网络元素进行改动。网络虚拟化技术能够有效地结合多个网络流量源来利用虚拟环境,从而提高网络安全性、可用性和性...

  • 网络传输是什么意思?

    网络传输是什么意思?

    网络传输是网络中的通信技术,是指通过电子网络(通常为网络)将消息、信息从一处传输到另一处的过程。网络传输有多种形式,如文件传输协议(FTP)、电子邮件及其他文件传输服务(如聊天室、文件共享等)。它们包含多种数据传输方法,如:以太网传输、点...

  • 网络开发是什么意思?

    网络开发是什么意思?

    网络开发是指利用Internet技术为用户构建、开发网络系统的过程。它包括搭建网络架构、使用编程语言编写各种程序、定义网站架构和功能性等。它通常将软件工程和网络技术完美结合,以满足特定用户需求,并将网站交给客户或企业使用。网络开发可以将一...

  • 周排行
  • 月排行
  • 年排行

精彩推荐