这是我曾经用于使用docker-compose成功运行docker容器的docker-compose文件。
现在尝试使用docker堆栈进行部署。我的经理和工作人员节点准备就绪。
搬运工-compose.yml
version: '3'
services:
prometheus:
image: prom/prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- '9090:9090'
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
使用的命令:
docker stack deploy -c docker-compose.yml monitoring
尝试在管理器节点中运行它。为什么服务没有运行。使用docker service ls
显示0/1检查服务是否正在运行,如下图所示。
尝试使用docker service logs <servicename>
检查日志时,没有任何内容被加载。
我到底错过了什么。我的最终目标是运行完整的docker监控服务,如cadvisor和node-exporter以及所有其他必需的服务。我试过这个 https://github.com/stefanprodan/swarmprom/blob/master/docker-compose.yml
我已经发现问题出在复制模式,尽管在全局模式下运行良好。
复制模式有什么错误。我不认为我在这里有语法错误。如何使其仅在复制模式和管理器节点中运行
答案 0 :(得分:0)
这可能与Swarm Master / Manager上的放置约束有关。尝试使用Azure容器服务在主节点上安排可视化工具或分配器容器时,我遇到了类似的问题。您可以检查主服务器的状态。如果它处于Puasing状态,您可以将其激活 我在https://www.handsonarchitect.com/2017/11/visualize-docker-swarm-in-azure.html
分享了我的经验答案 1 :(得分:0)
如果“ docker-compose up”一切正常,但您发现“ docker stack deploy”的问题。这就是我解决的方法。
我在Windows计算机中使用docker,而docker使用VirtualBox VM。您将需要进行端口转发以查看主机中的容器。
问题与与卷的绑定安装有关。
当我进行Docker检查时,请在以下两种情况下查看路径:
"Mounts": [
{
"Type": "bind",
"Source": "/c/Users/Bardav/Documents/Large-Scale-Software Testing/PromptDocker/PromptDocker/app_users",
"Destination": "/app",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}
"Mounts": [
{
"Type": "bind",
"Source": "C:\\Users\\Bardav\\Documents\\Large-Scale-Software Testing\\PromptDocker\\PromptDocker\\app_viewer",
"Target": "/app/"
}
],
解决方案:
更新docker-compose.yml
中的路径,它将起作用。例如;
相对路径无效
reg_users:
image: prompt_user_app
build: ./app_users/
volumes:
- ./app_users/:/app/
完全正确的路径
reg_users:
image: prompt_user_app
build: ./app_users/
volumes:
- "/c/Users/Bardav/Documents/Large-Scale-Software Testing/PromptDocker/PromptDocker/app_users:/app/"