如何获得宿主机IP
Linux 获得宿主机IP
在Linux下安装Docker的时候,会在宿主机安装一个虚拟网卡 docker0,我们可以使用宿主机在docker0上的IP地址来代替localhost。
首先,使用如下命令查询宿主机IP地址:
可以发现宿主机的IP是 172.17.0.1
Windows 和 macOS 获得宿主机IP
在 Windows 和 macOS 平台下并没有docker0虚拟网卡,这时候可以使用 host.docker.internal(证实有效)、gateway.docker.internal 这个特殊的DNS名称来解析宿主机IP。
由此发现,不同系统下宿主机的IP是不同的,所以使用宿主机IP,不能跨环境通用。
Dockder 网络知识讲解
安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host
在docker中使用 --network host 来为容器配置 host 网络:
上面的命令中,没有必要像前面一样使用-p 80:80 -p 443:443来映射端口,是因为本身与宿主机共用了网络,容器中暴露端口等同于宿主机暴露端口。
使用host网络不需要修改nginx.conf,仍然可以使用localhost,因而通用性比上一种方法好。但是,由于host网络没有bridge网络的隔离性好,使用host网络安全性不如bridge高。
参考:https://www.cnblogs.com/hahaha111122222/p/13370773.html
当然也可以使用 docker network create 创建网络,把指定容器连接到同一个网络,实现通信;
Docker 网络相关命令讲解
docker network connect #将容器连接到网络 docker network create #创建一个网络 docker network disconnect #断开容器的网络 docker network inspect #显示一个或多个网络的详细信息 docker network ls #列出网络 docker network prune #删除所有未使用的网络 docker network rm #删除一个或多个网络
docker network ls 列出网络
docker network ls命令用于列出网络。列出引擎守护进程知道的所有网络。 这包括跨群集中多个主机的网络。
用法
docker network ls [OPTIONS]
选项
docker network create 创建网络
docker network create命令用于创建一个新的网络连接。
DRIVER接受内置网络驱动程序的桥接或覆盖。如果安装了第三方或自己的自定义网络驱动程序,则可以在此处指定
DRIVER。 如果不指定
--driver选项,该命令将为您自动创建一个桥接网络。 当安装
Docker Engine时,会自动创建桥接网络。 该网络对应于Engine传统依赖的
docker0网桥。 当启动使用
docker run运行新容器时,它将自动连接到此桥接网络。不能删除此默认网桥,但可以使用
用法
docker network create [OPTIONS] NETWORK
选项
docker network rm命令用于删除一个或多个网络。按名称或标识符删除一个或多个网络。 要删除网络,必须要先断开连接到它的任何容器的网络。
用法
docker network rm NETWORK [NETWORK...] Shell
选项
docker network connect 将容器连接到网络
docker network connect命令用于将容器连接到网络。可以按名称或ID连接容器。 一旦连接,容器可以与同一网络中的其他容器通信。
用法
docker network connect [OPTIONS] NETWORK CONTAINER Shell
选项
docker network disconnect 断开容器的网络
docker network disconnect命令用于断开容器的网络。容器必须运行才能将其与网络断开连接。
用法
docker network disconnect [OPTIONS] NETWORK CONTAINER
选项
docker network inspect 显示一个或多个网络的详细信息
docker network inspect命令用于显示一个或多个网络的详细信息。它返回有关一个或多个网络的信息。 默认情况下,此命令将所有结果呈现在JSON对象中。
用法
docker network inspect [OPTIONS] NETWORK [NETWORK...]
选项
docker network prune 删除所有未使用的网络
docker network prune命令用于删除所有未使用的网络。未使用的网络是不被任何容器引用的网络。
用法
docker network prune [OPTIONS]
选项