无法在docker swarm中使用docker堆栈运行服务

时间:2018-02-15 07:04:02

标签: docker docker-compose docker-swarm prometheus docker-swarm-mode

这是我曾经用于使用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 ls checking

尝试使用docker service logs <servicename>检查日志时,没有任何内容被加载。

我到底错过了什么。我的最终目标是运行完整的docker监控服务,如cadvisor和node-exporter以及所有其他必需的服务。我试过这个 https://github.com/stefanprodan/swarmprom/blob/master/docker-compose.yml

  

我已经发现问题出在复制模式,尽管在全局模式下运行良好。

复制模式有什么错误。我不认为我在这里有语法错误。如何使其仅在复制模式和管理器节点中运行

2 个答案:

答案 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检查时,请在以下两种情况下查看路径:

  1. 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"
}


  1. Docker堆栈部署-c docker-compose.ymal存储区:


"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/"