【发布时间】: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