专业建设网站企业,自动搜索关键词软件,网站开发小作业,有限公司和股份有限公司的区别docker 网络简介
docker 在安装时会默认创建三个网络#xff1a;bridge#xff08;默认网络模式#xff09;、 none 、host。
host 直接和宿主机共用网络。bridge 网络隔离#xff0c;通过虚拟网桥#xff08;一般是 docker0#xff09;与宿主机通信。none 禁用网络功能…docker 网络简介
docker 在安装时会默认创建三个网络bridge默认网络模式、 none 、host。
host 直接和宿主机共用网络。bridge 网络隔离通过虚拟网桥一般是 docker0与宿主机通信。none 禁用网络功能。
解决办法
使用 host模式常用
docker 运行容器时 默认桥接网络模式如果使用 host 模式就可以访问所以需要将 docker 的网络模式设置为 host 模式。 修改方式 docker run 启动容器时加入–nethost docker run -d --networkhost my-container:latestcompose 文件中指定network_mode: “host”便可以 host 模式运行容器
services:my-service:network_mode: host 使用host.docker.internal host.docker.internal 是一个特殊的DNS名称用于Docker容器内部访问宿主机的地址。当容器运行时它可以使用此名称直接连接到宿主机上运行的服务而无需知道宿主机的IP地址。在 container 内可以直接请求host.docker.internal:PORT来获取宿主机上提供的各种服务 mac 和 windows host.docker.internal 在Docker for Mac和Docker for Windows中是预定义的 需要容器应用配置中的 127.0.0.1 替换为 host.docker.internal
linux 在Linux中是不支持的。在Linux中可以使用–add-host选项手动将宿主机的IP地址添加到容器的/etc/hosts文件中达到效果。 使用 docker 运行容器 时加入如下参数
--add-hosthost.docker.internal:host-gateway使用 Docker Compose则应该将下面的语句加入 container 的声明中
extra_hosts:- host.docker.internal:host-gateway使用 docker0 网络的IP 在默认的 bridge 模式下docker0 网络的默认网关即是宿主机。在容器中使用该 IP 地址即可访问宿主机上的各种服务 LinuxWindows下docker0 网络通常会分配一个 172.17.0.0/16 的网段其网关通常为172.17.0.1macOS 下的网段则为 192.168.65.0/24网关为192.168.65.1。
这种情况下经由 docker0 网桥而来的流量 不经过宿主机的本地回环因此需要将宿主机上的服务配置为 监听 0.0.0.0。
注意 IP 并不一定完全固定可能会因系统及配置而发生变化应用也需要更改。