【问题标题】:Can ping but not wget between Docker containers在 Docker 容器之间可以 ping 但不能 wget
【发布时间】:2018-12-03 15:24:37
【问题描述】:

我正在使用 docker-compose 设置一个 NextJS 应用程序,该应用程序从运行在单独容器中的 Wordpress REST-API 获取数据。

问题是,当我尝试从 NextJS 容器中获取或 WGET wordpress 容器 http://wordpress:8000 时,我得到了 ECONNREFUSED。我可以 ping wordpress:8000 没有任何问题。

如果我使用 Postman 或尝试使用公共 ip 从另一台主机(即不是运行 docker-compose 的机器)获取 REST-API,它可以完美运行。

我怀疑一些 docker 配置问题,但我很迷茫,因为 ping 有效,但 wget 无效。

有人知道罪魁祸首是什么吗?

我的 docker-compose.yml

version: '2'
  services:
  db:
   image: mysql:5.7
   volumes:
     - db_data:/var/lib/mysql
   restart: always
   environment:
     MYSQL_ROOT_PASSWORD: ***REMOVED***
     MYSQL_DATABASE: ***REMOVED***
     MYSQL_USER: ***REMOVED***
     MYSQL_PASSWORD: ***REMOVED***
   networks:
     - back
   wordpress:
     depends_on:
     - db
     image: wordpress:latest
   volumes:
     - ./wp-content:/var/www/html/wp-content 
   ports:
     - "8000:80"
   restart: always
   environment:
     WORDPRESS_DB_HOST: db:3306
     WORDPRESS_DB_USER: root
     WORDPRESS_DB_PASSWORD: ***REMOVED****
   networks:
     - back
   phpmyadmin:
   depends_on:
     - db
   image: phpmyadmin/phpmyadmin
   restart: always
   ports: 
     - 8080:80
   environment:
     PMA_HOST: db
     MYSQL_ROOT_PASSWORD: ***REMOVED***
   networks:
     - back
   next-app:
     depends_on:
       - wordpress
   build:
     context: ./next-app
     dockerfile: Dockerfile
   volumes:
     - './next-app:/usr/src/app'
     - '/usr/src/app/node_modules'
   ports:
     - '80:3000'
   networks:
     - back
 express-server:
   build:
   context: ./express-server
   dockerfile: Dockerfile
   ports:
     - '3001:3001'
networks:
   back:
   driver: bridge
volumes:
   db_data:

【问题讨论】:

    标签: wordpress docker docker-compose


    【解决方案1】:

    在 NextJS 容器中,您需要使用端口 80。端口8000 来自您的(主机)机器。所以在 docker 容器中使用http://wordpress:80


       ports:
         - "8000:80"
    

    在你的 docker-compose 文件中只是说:“将我的本地(主机)端口 8000 映射到容器端口 80”,但在 docker 网络中,它仍然是端口 80

    您可以 ping,因为 ping 不使用端口。我们所说的端口是 TCP/UDP 端口,请参阅https://en.wikipedia.org/wiki/Port_(computer_networking)。但是ping使用的是ICMP(Internet Control Message Protocol),完全不使用端口,见https://en.wikipedia.org/wiki/Ping_(networking_utility)

    【讨论】:

    • 我有两个容器,容器端口为 80,并将 phpmyadmin 端口更改为 81。然后我对 wordpress:80 进行了提取,它可以工作!太好了,非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    相关资源
    最近更新 更多