问下我docker compose安装nginx php后,在nginx容器内为啥连不上外网了?

情况是我用docker compose 安装了nginx,php镜像和容器后。
发现nginx 连不上外网
docker-compose.yml 里面有一个子网络

networks:
  net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.18.0.0/24
 nginx:
    image: nginx
    container_name: nginx
    networks:
      net:
        ipv4_address: 172.18.0.13          
nginx 容器ip地址是172.18.0.13        

然后我docker0 的ip地址是

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1

问下是我那个子网的网段与docker0网段不一致导致我nginx容器连不上外网吗?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

可能是由于你的 nginx 容器所在的子网与 docker0 网桥的网段不一致导致的。nginx容器的 IP 地址是172.18.0.13,而 docker0 的 IP 地址是172.17.0.1,它们属于不同的子网。在容器之间进行网络通信时,会受到网络配置的限制。

为了让 nginx 容器能够连接到外网,你可以尝试两种解决方案:

1.将 docker0 网桥的 IP 地址修改为与 nginx 容器所在子网相匹配。可以通过修改 Docker 的网络配置文件来实现,具体的操作方法可能会因操作系统和 Docker 版本而有所不同。在修改完成后,重启 Docker 服务使配置生效。

2.将 nginx 容器的网络配置修改为与 docker0 网桥的网段一致。使 nginx 容器的 IP 地址与 docker0 网桥的同一子网中的 IP 地址相匹配。

当 nginx 容器和 docker0 网桥所在的子网匹配时,你应该可以通过 nginx 容器连接到外网了。

8个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!