【问题标题】:How to communicate between a container and a docker deamon?如何在容器和 docker daemon 之间进行通信?
【发布时间】:2020-10-21 17:24:26
【问题描述】:

我有一个 dockerized 应用程序,负责创建新的容器化任务。 Dodałem moją aplikację do docker-comopse z niektórymi usługami。

version: '3.8'
services:
  docker-mongodb:
    image: mongo:latest
    restart: always
    container_name: "hpc-mongodb"
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: root
    ports:
      - "27017:27017"
    volumes:
      - mongodb_data:/var/lib/mongodb/data
  prometheus:
    build: "./config/prometheus"
    container_name: "prometheus"
    ports:
      - "9090:9090"
    volumes:
      - prometheus-data:/var/lib/prometheus
  grafana:
    build: "./config/grafana"
    container_name: "grafana"
    ports:
      - "3000:3000"
    volumes:
      - grafana-data:/var/lib/grafana
  monitoring-app:
    build: "./"
    ports:
    - "8080:8080"
volumes:
  mongodb_data: {}
  grafana-data: {}
  prometheus-data: {}

我使用 Windows。现在我想连接到我的本地 docker 守护进程,但我不知道该怎么做。我不断收到错误消息:javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1] failed: Connection refused (Connection refused)

我在 docker 桌面选项中启用了:Expose daemon on tcp://localhost:2375 without TLS。 我不知道该怎么做。你能帮助我吗?我将不胜感激。

【问题讨论】:

  • 如果不授予服务器进程在主机上不受限制的管理员级别访问权限,您将无法做到这一点。您检查的“公开守护程序”选项非常危险,因为它还为任何本地进程提供了此权限。您是否需要动态启动容器,或者您可以重新架构您的系统以以不同的方式工作?
  • 我可以重新架构我的系统。你有什么建议吗?
  • 一种有用的方法是使用像 RabbitMQ 这样的队列系统。与其动态启动容器,不如将任务添加到队列中,然后启动一个长时间运行的工作容器(或多个)来完成工作。您的应用程序框架可能本身就支持这一点。这不会将您绑定到 Docker,避免生命周期管理和权限问题,并让您控制任务完成的速度。

标签: docker docker-compose


【解决方案1】:
  1. 您必须设置DOCKER_HOST 环境变量

    set DOCKER_HOST=tcp://localhost:2375

  2. 更改docker 桌面设置并重新启动docker 桌面

【讨论】:

    猜你喜欢
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 2015-08-13
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 2018-01-28
    相关资源
    最近更新 更多