Docker 个容器在出错时变为 unresponsive/hang

Docker containers become unresponsive/hang on error

我在 Windows 上 运行 Docker 桌面,遇到容器对启动错误无响应的问题。这种情况不会发生 'every' 次,但大多数时候都是如此。因此,我必须非常小心地一次启动我的容器 1,如果我看到一个错误,我必须“重新启动 Docker 桌面”并重新启动。

我正在使用 docker-compose 作为一个具体的例子,今天早上我开始使用 elasticsearch、zookeeper,然后是 kafka。 Kafka 抛出关于 zookeeper 状态的异常并关闭 - 但现在 kafka 容器在 docker 中没有响应。我无法阻止它(它已经停止了吗?)但它显示为 运行。我无法通过 CLI 进入它,我无法重新启动它。前进的唯一方法是使用调试菜单重新启动 docker。 (如果我打开了 restart:always 标志,那么容器实际上会自动重启,但考虑到它们会抛出错误,它只会原地打转,开始然后死去,而我无法 stop/kill/remove有问题的容器) 重新启动后 docker,我将能够查看容器的日志并查看抛出的错误...

我的几乎所有容器都会发生这种情况,但是如果我在 Docker 桌面中查看日志 window 时启动容器,它可能是 'more likely'如果出现错误,我将能够再次启动容器。

我尝试了几种不同的容器,这对我们来说似乎是一个很常见的问题,它似乎与我传递到容器中的任何特定设置无关,但是我们 docker-撰写文件如下:

volumes:
   zData:
   kData:
   eData:

   zookeeper:
      container_name: zookeeper
      image: bitnami/zookeeper:latest
      environment:
         ALLOW_ANONYMOUS_LOGIN: "yes"           #Dev only
         ZOOKEEPER_ROOT_LOGGER: WARN, CONSOLE
         ZOOKEEPER_CONSOLE_THRESHOLD: WARN
      ports:
         - "2181:2181"
      volumes:
         - zData:/bitnami/zookeeper:rw
      logging:
         driver: "fluentd"
         options:
            fluentd-address: localhost:24224
            tag: zookeeper
            fluentd-async-connect: "true"
         
   kafka:
      container_name: kafka
      image: bitnami/kafka:latest
      depends_on:
         - zookeeper
      environment:
         ALLOW_PLAINTEXT_LISTENER: "yes"  # Debug only
         KAFKA_ADVERTISED_PORT: 9092
         KAFKA_ADVERTISED_HOST_NAME: kafka
         KAFKA_CREATE_TOPICS: xx1_event:1:1,xx2_event:1:1,xx3_event:1:1,xx4_event:1:1
         KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=${DOCKER_HOSTNAME} -Dcom.sun.management.jmxremote.rmi.port=9096 -Djava.net.preferIPv4Stack=true
         JMX_PORT: 9096
         KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      hostname: kakfa
      ports:
         - 9092:9092
         - 9096:9096
      volumes:
         - kData:/bitnami/kafka:rw
      logging:
         driver: "fluentd"
         options:
            fluentd-address: localhost:24224
            tag: zookeeper
            fluentd-async-connect: "true"

   elasticsearch:
      image: bitnami/elasticsearch:latest
      container_name: elasticsearch
      cpu_shares: 2048
      environment:
         ELASTICSEARCH_HEAP_SIZE: "2048m"
         xpack.monitoring.enabled: "false"
      ports:
         - 9200:9200
         - 9300:9300
      volumes:
        - C:/config/elasticsearch.yml:/opt/bitnami/elasticsearch/config/my_elasticsearch.yml:rw
        - eData:/bitnami/elasticsearch/data:rw

我想知道这是否可能成为一个资源问题,但是我 运行 这是在一台使用 WSL2 (使用 Hyper-V 时也会发生这种情况)并且 RAM 限制看起来并没有被接近。当启动没有错误时,系统运行良好并使用更多资源。

有什么我可以尝试的想法吗?我很惊讶没有更多的人为此苦苦挣扎?

当前存在一个问题https://github.com/moby/moby/issues/40063,当在异步模式下将日志记录设置为 fluentd 且 fluentd 容器无法运行时,容器将 hang/freeze/become 无响应。