标签: docker-stack

在堆栈部署后向堆栈添加服务

我正在尝试在堆栈部署后向堆栈添加服务。但是这个新服务在与堆栈内的服务(redis)通信时遇到了麻烦。

这是我目前对堆栈和服务的理解,如果有任何不准确之处,请告诉我。

堆栈是服务之上的抽象,它提供有用的实用程序,例如 DNS,因此堆栈中的服务可以相互通信。堆栈允许我们在逻辑上分离出可能运行在同一个群上的服务组(因此不同的开发团队可以共享同一个群)。

我想首先将一个堆栈部署到一个 swarm 中(通过 compose 文件),然后定期添加容器,就像这篇关于一次性容器的文章中描述的那样。这些容器是不同的,因为它们正在执行长时间的、有状态的操作。他们需要在一些初始状态下启动,完成他们的工作,然后离开。它们是不同的,因为它们不需要复制或负载平衡。

基本上我想做的是:

像这样启动一个“堆栈”:

docker stack deploy --with-registry-auth --compose-file docker-compose.yml my-stack

然后一段时间后,当满足某些条件时,添加一个这样的容器:

docker service create -name statefulservice reponame/imagename

这通常按预期运行,除了 statefulservice 无法与 my-stack 中的 redis 通信。

我相信 statefulservice 的设计是正确的,因为当它被添加到 docker-compose.yml 时,它会按预期运行。

可能相关也可能不相关的进一步细节是,创建新服务的命令是从 swarm 中的容器发出的。这是使用 go sdk for docker 发生的,我正在按照一次性容器文章描述的方式使用它

我怀疑这无关紧要的原因:当我仅通过 docker-cli 执行此操作时(并且不使用 docker sdk for go),我仍然遇到这个问题。

docker docker-compose docker-swarm docker-swarm-mode docker-stack

9
推荐指数
1
解决办法
5101
查看次数

未在管理器节点中运行时,Docker服务laravel应用程序未运行

docker-compose.yml 这是我的docker -compose文件,用于使用docker -stack在多个实例中部署服务.正如您所看到的那样,应用程序服务是在两个节点中运行的laravel和其中一个节点中的数据库(mysql).

完整代码存储库: https ://github.com/taragurung/Ci-CD-docker-swarm

version: '3.4'
networks:
  smstake:   
    ipam:
      config:
        - subnet: 10.0.10.0/24

services:
    db:
        image: mysql:5.7
        networks:
          - smstake
        ports:
          - "3306"
        env_file:
          - configuration.env
        environment:
          MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
          MYSQL_DATABASE: ${DB_NAME}
          MYSQL_USER: ${DB_USER}
          MYSQL_PASSWORD: ${DB_PASSWORD}
        volumes:
          - mysql_data:/var/lib/mysql
        deploy:
          mode: replicated
          replicas: 1

    app:
        image: SMSTAKE_VERSION
        ports:
          - 8000:80
        networks:
          - smstake
        depends_on:
          - db
        deploy:
          mode: replicated
          replicas: 2
Run Code Online (Sandbox Code Playgroud)

我面临的问题. 1.虽然当我检查服务日志时服务处于运行状态,但我可以看到仅在一个节点中成功迁移而在另一个节点中没有运行.请参阅下面的日志

  1. 当我使应用程序服务仅在管理器节点中运行限制时,应用程序运行良好.我可以登录页面并执行所有操作但是当我使用复制品在任何节点中运行应用程序服务时,登录页面显示但是当尝试登录时重定向到 NOT FOUND页面 …

docker docker-compose docker-swarm laravel-5.3 docker-stack

7
推荐指数
1
解决办法
453
查看次数

使用 docker stack 时挂载 tmpfs

部署独立容器时,我可以使用自定义选项将 /dev/shm 挂载为 tmpfs,如下所示:

docker run --name my-container -v /dev/shm --tmpfs /dev/shm:rw,nosuid,nodev,exec,size=90g my-image
Run Code Online (Sandbox Code Playgroud)

但是,在使用docker stack deploy. 此处的文档中似乎没有任何相关信息。与以下docker-compose.yml

version: '3.6'
services:
  master:
  image: "my-image"
  ports:
   - "8080:8080"
  volumes:
   - type: tmpfs
     target: /dev/shm
Run Code Online (Sandbox Code Playgroud)

/dev/shm使用默认选项安装。如何使用/dev/shm选项安装?(rw,nosuid,nodev,exec,size=90g)docker stack deploy

docker docker-compose docker-stack

7
推荐指数
1
解决办法
2997
查看次数

docker stack中网络<->服务的创建顺序

在 docker-sompose 中:

services:
  srvA:
  (..)
  networks:
        - backend
  srvB:
  (..)
  networks:
        - frontend
networks:
  frontend:
    driver: overlay
  backend:
    driver: overlay
Run Code Online (Sandbox Code Playgroud)

当我开始docker stack deploy -c docker-compose.yml myname创建网络服务对的顺序是随机的,如果srvA在创建backend网络之前开始,则会出现错误:

无法创建服务 srvA:来自守护程序的错误响应:未找到网络 myname_backend

如何保证网络先于服务创建?

docker docker-compose docker-swarm docker-stack

7
推荐指数
0
解决办法
233
查看次数

“docker stack deploy”:docker 镜像在哪里?

我创建了一个 docker compose *.yml 文件,其中有许多带有指定图像标签的服务。然后我让 docker 为我(在我的本地机器上)部署一个堆栈docker stack deploy -c .\my-compose-file.yml --with-registry-auth dev,它能够运行所有服务。当我docker events同时运行时,我可以image pull在日志中看到消息,因此 docker 会提取丢失的图像。但是当我运行时docker image ls -a,这里不显示拉取的图像。

所以我想知道并想知道,下载的图像有什么实时周期(无论是否从我的驱动器中删除docker stack rm),如果没有,我该如何清理这些图像?

docker docker-compose docker-stack

7
推荐指数
1
解决办法
148
查看次数

获取类型为"bind"的无效mount配置:docker中不存在绑定源路径

我正在尝试将以下docker-compose部署到docker swarm集群中.

version: '3.2'
services:
  jenkins:
    image: jenkins/jenkins:lts
    ports:
      - 8080:8080
    volumes:
      - ./data_jenkins:/var/jenkins_home
    deploy:
      mode: replicated
      replicas: 1
Run Code Online (Sandbox Code Playgroud)

我确实在docker -compose所在的相同位置有data_jenkins,并将该路径作为卷传递.但为什么抛出源路径不存在.究竟是什么问题.

此外,如果目录不存在-v应该创建它正确.为什么不呢?

docker docker-compose docker-swarm docker-stack

6
推荐指数
1
解决办法
9480
查看次数

服务重启后 Docker 节点关闭

我的服务器似乎空间不足,而且我在部署的一些 docker 堆栈方面遇到了一些问题。我花了一段时间才弄明白,但最终我做到了并删除了几个容器和图像以释放一些空间。

我能够运行service docker restart并且它起作用了。但是,存在一些问题:

  • docker info 说群是“待定”
  • docker node ls显示我唯一的节点(领导者),它是available但它是down
  • journalctl -f -u docker 说`level=error msg="错误删除任务" error="不兼容的值模块=node/agent/worker node.id="

运行时docker service ls,所有服务都有0/1副本。

这是运行时的状态 docker node ls

"Status": {
    "State": "down",
    "Message": "heartbeat failure for node in \"unknown\" state",
    "Addr": "<ip and port>"
},
"ManagerStatus": {
    "Leader": true,
    "Reachability": "reachable",
    "Addr": "<ip and port>"
}
Run Code Online (Sandbox Code Playgroud)

如何让我的服务再次运行?

docker docker-swarm docker-stack

6
推荐指数
2
解决办法
6142
查看次数

使用 docker stack 进行卷挂载

以下是我的 docker-stack 文件。

\n\n
version: "3"\nservices:\n  my-app:    \n    image: my-image:latest    \n    volumes:\n      - ./certs:/certs   \n    ports:\n      - 6401:6401\n    networks:\n      my-net:        \n         ipv4_address: 192.168.0.4\nnetworks:\n  my-net:\n    external: true\n
Run Code Online (Sandbox Code Playgroud)\n\n

它在我的机器上运行良好,将证书文件夹绑定到容器内的证书。但是在我的 CI 管道中不起作用,我在 docker-stack-node 映像中部署此服务。我得到的错误是

\n\n
\n

“bind”类型的安装配置无效:绑定安装源路径\n不存在。

\n
\n\n

我读到,如果将主机路径绑定安装到 service\xe2\x80\x99s 容器中,则该路径必须存在于每个 swarm 节点上。所以,我想我需要创建一个命名卷。但是,对于指定卷,我无法指定证书的源路径。这很令人困惑。有人可以帮忙吗?

\n

docker docker-compose docker-swarm docker-stack

6
推荐指数
1
解决办法
9198
查看次数

如何更改Docker堆栈重启行为?

在我们的项目中,我们继承了Docker环境,其中包含一些服务堆栈.

我注意到Docker一旦面临内存限制就重新启动堆栈.

不幸的是,根据我在Docker网站上的问题,我没有找到任何信息,所以我在这里问:

  1. 这种行为是可配置的吗?例如,我不希望Docker在任何情况下重启我的堆栈.如果它是可配置的,那么如何?
  2. 是否有任何泊坞日志来保持任何堆栈重启,因为它的条目?

docker docker-compose docker-stack

6
推荐指数
1
解决办法
379
查看次数

Docker 编写健康检查选项

我试图了解 docker compose 健康检查选项是如何工作的。

健康检查:间隔:1分30秒超时:10秒重试:3

我说的对吗,这个配置将每 90 秒轮询一个容器,然后如果容器在 10 秒后超时,那么 swarm 将重试 3 次,之后它将标记容器终止并创建一个新容器替换它

这里的文档 https://docs.docker.com/compose/compose-file/compose-file-v3/

不是很有帮助。

谢谢

docker docker-compose docker-swarm docker-stack

6
推荐指数
1
解决办法
1万
查看次数