【问题标题】:Why docker container does not listen the port and I can't ping it from another container为什么 docker 容器不监听端口,我无法从另一个容器 ping 它
【发布时间】:2020-03-12 19:13:19
【问题描述】:

我需要从另一个容器 ping 一个容器 (k4fntr_sl_listener),我尝试使用容器名称和端口来执行此操作,但它不起作用。

networks:
  backend-network:
    driver: bridge
  frontend-network:
    driver: bridge

volumes:
   redis-data:
   pg-data:

services:
  &app-service app: &app-service-template
    container_name: k4fntr_app
    build:
      context: ./docker/php-fpm
      args:
        UID: ${UID?Use your user ID}
        GID: ${GID?Use your group ID}
        USER: ${USER?Use your user name}
    user: "${UID}:${GID}"
    hostname: *app-service
    volumes:
      - /etc/passwd/:/etc/passwd:ro
      - /etc/group/:/etc/group:ro
      - ./:/var/www/k4fntr
    environment:
      APP_ENV: "${APP_ENV}"
      CONTAINER_ROLE: app
      FPM_PORT: &php-fpm-port 9000
      FPM_USER: "${UID:-1000}"
      FPM_GROUP: "${GID:-1000}"
    depends_on:
      - redis
      - database
    networks:
      - backend-network

  &queue-service queue:
    <<: *app-service-template
    container_name: k4fntr_queue
    restart: always
    hostname: *queue-service
    depends_on:
      - app
    environment:
      CONTAINER_ROLE: queue

  &schedule-service schedule:
    <<: *app-service-template
    container_name: k4fntr_schedule
    restart: always
    hostname: *schedule-service
    depends_on:
      - app
    environment:
      CONTAINER_ROLE: scheduler

  &sportlevel-listener sportlevel_listener:
    <<: *app-service-template
    container_name: k4fntr_sl_listener
    restart: always
    hostname: *sportlevel-listener
    ports:
      - "8999:8999"
    depends_on:
      - app
    environment:
      CONTAINER_ROLE: sl_listener

我可以看到容器映射端口

我还可以看到一个网络中的容器

docker 网络检查 fntr_backend-network

"Containers": {
            "20057689b3921b3a4b1ee99f015b89b033cf072934f4cbbf63934b38b3b63203": {
                "Name": "k4fntr_php-fpm",
                "EndpointID": "700f507b0ae0eb830d5922f646ea459e67e2f5cc878867a6c15114ff9bcb202c",
                "MacAddress": "02:42:c0:a8:80:07",
                "IPv4Address": "192.168.128.7/20",
                "IPv6Address": ""
            },
            "30b4ac098109c512065082d42f6594569cd51b69937e502686b6fc91c9b410ff": {
                "Name": "k4fntr_echo",
                "EndpointID": "c5e96fa17ac3f932b93bc98ffd19d9f1ba60d71deabe82c5a9c53fe9c67e8020",
                "MacAddress": "02:42:c0:a8:80:05",
                "IPv4Address": "192.168.128.5/20",
                "IPv6Address": ""
            },
            "3ea5a601c4c0d803864cd420a7e4d689f2a985b27c5ba4c9c58a872e91945a0f": {
                "Name": "k4fntr_app",
                "EndpointID": "cc2a7dfbd0059f7483398684c9b969c2edf90178a7e38b311c9dce107a22fb61",
                "MacAddress": "02:42:c0:a8:80:06",
                "IPv4Address": "192.168.128.6/20",
                "IPv6Address": ""
            },
            "a176fed5488fc02e3bb819393ada72f710c7d3435876f0326d5f55214a2e1df9": {
                "Name": "k4fntr_queue",
                "EndpointID": "4d85ef092a69a9f1c3362eec99c193dc3e94f09682a37f0486596ba12fa70b1e",
                "MacAddress": "02:42:c0:a8:80:09",
                "IPv4Address": "192.168.128.9/20",
                "IPv6Address": ""
            },
            "a689d0b480fd0f68e0f2385f73b75788714698af5d5466fefc7d65a7dcb39dbb": {
                "Name": "k4fntr_mail",
                "EndpointID": "d29306a336018773e8937cabafa06774cc5ef3cef7eaa7e62a5ba2eba403bbf0",
                "MacAddress": "02:42:c0:a8:80:03",
                "IPv4Address": "192.168.128.3/20",
                "IPv6Address": ""
            },
            "a772c494e567017e7315df5fe67aeb45b4ee75ba8e555c4ef671f909928caa30": {
                "Name": "k4fntr_database",
                "EndpointID": "7d6c43b4d97485c49bbd8ded016b298d80b52d82bed3b69447293b8d5aabb8ce",
                "MacAddress": "02:42:c0:a8:80:04",
                "IPv4Address": "192.168.128.4/20",
                "IPv6Address": ""
            },
            "d2ebc1a9f62455fee874d64ab89d71e867bdbecd546968efbe75b9fea4f0043d": {
                "Name": "k4fntr_schedule",
                "EndpointID": "12aa000ce78b9ec8c881e88face25208c22f02e1aa8e094b4bf03e0cca393da8",
                "MacAddress": "02:42:c0:a8:80:0a",
                "IPv4Address": "192.168.128.10/20",
                "IPv6Address": ""
            },
            "d70d86bb4237f6e46dc1ccd103d8cca7913eeb33bf4c9e331ce7a523cd104648": {
                "Name": "k4fntr_redis",
                "EndpointID": "24ae090c619ede754eda9d406725388abe953f648aa436bfe4226623a0199001",
                "MacAddress": "02:42:c0:a8:80:02",
                "IPv4Address": "192.168.128.2/20",
                "IPv6Address": ""
            },
            "fc14098eeee8d87fe34e78a4117ed7cc7962cf1735dfe93c790024db0126bb38": {
                "Name": "k4fntr_sl_listener",
                "EndpointID": "5483d16d8d542b67aa0d8c9dfa2e2bdd2bbe7633d5324ab8551c451133614d51",
                "MacAddress": "02:42:c0:a8:80:08",
                "IPv4Address": "192.168.128.8/20",
                "IPv6Address": ""
            }
        },

但是当我尝试 ping 这个容器时,我遇到了连接被拒绝的问题

我还看到我需要 ping 的容器没有监听 8999 端口

php进程只有一个监听端口。

我该如何解决这个问题?是否可以从另一个容器 ping 这个 php 进程?我需要它,因为这个容器只是为这个我需要 ping 的 php 进程创建的

【问题讨论】:

  • 您是否尝试通过 docker-compose 而不是 docker 来完成?
  • 另外我认为你需要在 docker-compose 中提供链接条目,容器将在将使用 ping 的容器上 ping
  • 但我正在使用 docker-compose。据我所知,链接已被弃用?
  • 抱歉,您是对的,链接已被弃用。但是关于使用 - 你使用 docker 连接到容器,而不是 docker-compose。 (docker exec -it 而不是docker-compose exec ... bash)
  • 另外你确定你需要使用容器名而不是主机名吗?

标签: docker docker-compose


【解决方案1】:

所以我找到了答案。简而言之,问题是我的进程正在监听 localhost,我无法 ping 它。我在 0.0.0.0:8096 上更改了脚本并在“8096:8096”上更改了端口,一切正常

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    相关资源
    最近更新 更多