标签: docker-swarm-mode

Docker Swarm - 无法从私有注册表中提取

我正在Swarm集群上运行服务,感谢docker stack deploy --with-registry-auth和这个撰写文件:

version: "3.1"
services:
  builder-consumer:
    image: us.gcr.io/my-gcloud-project/my/image:123
    stop_grace_period: 30m
    volumes:
      - [...]
    environment:
      - [...]
    deploy:
      mode: global
      placement:
        constraints:
          - node.role == worker
    secrets:
      - [...]
secrets:
  [...]
Run Code Online (Sandbox Code Playgroud)

这在部署时工作正常,但是当我稍后向群添加工作节点时,新工作人员无法提取运行任务所需的映像.系统日志报告:

level = error msg ="在请求\"/ v2/my-gcloud-project/my/image/manifests/123 \"之后,不继续执行错误后拉:拒绝:\ 123 \"权限被拒绝."

level = info msg ="翻译"被拒绝:来自请求\\"/ v2/my-gcloud-project/my/image/manifests/123 \\"的\\"123 \\"权限被拒绝.\"到\"存储库us.gcr.io/my-gcloud-project/my/image未找到:不存在或没有拉取访问权限"""

level = error msg ="pull image failed"error ="repository us.gcr.io/my-gcloud-project/my/image not found:不存在或没有pull access"module ="node/agent/taskmanager"节点.id = ... service.id = ... task.id = ...

level = error …

docker docker-swarm-mode

5
推荐指数
1
解决办法
1433
查看次数

Docker Swarm 模式路由网格与 linkerd

Docker Swarm 模式路由网格是 linkerd 路由网格的内置替代品吗?换句话说,如果有开箱即用的解决方案,还有理由研究 linkerd 吗?

docker microservices docker-swarm-mode linkerd

4
推荐指数
1
解决办法
1390
查看次数

镜像版本已外部化至.env文件的Docker Swarm

我曾经将映像版本外部化为.env文件。这使维护变得容易,而且我docker-compose.yml不仅仅为了升级版本就修改文件,所以我确定我不会误删一行。

但是当我尝试将我的服务部署stack到时swarm,docker引擎抱怨我的映像不是正确的存储库/标签,并带有以下确切消息:

来自守护程序的错误响应:rpc错误:代码= 3 desc = ContainerSpec:“组/图像:”不是有效的存储库/标签

要解决此问题,我可以直接在docker-compose.yml文件中修复映像版本。这里有逻辑还是一个错误?但这混合了docker-compose和变量部分的修复部分。

干杯,奥利维尔

docker docker-swarm-mode docker-stack

4
推荐指数
4
解决办法
2719
查看次数

docker stack deploy不会删除当前yaml compose文件中未声明的服务

我目前在管道中使用Docker Swarm模式,我使用大量docker stack deploy -c compose-file.yml name-of-the-stack的命令来更新堆栈与最新的docker镜像.它完全有效,除非我不从yaml文件中删除服务.在这种情况下,stack deploy命令应该在更新另一个的映像之上删除不再存在的服务,但行为是它使容器保持运行并且这不是预期的行为.由于这个结果我有改变了它docker stack rm name-of-the-service,然后docker stack deploy -c compose-file.yml name-of-stack.但这有另一个可怕的副作用,随机影响容器:命令docker stack rm name-of-the-stack经常使nginx容器代理的可靠性完全不可靠(似乎与此问题相关https://github.com/docker/docker/issues/24244).事实上,nginx容器(在另一个堆栈中,但在相同的覆盖网络中),负责处理容器之间的所有请求,并使用Docker Swarm模式的路由网格功能在它们之间进行代理传递.重新创建部署的堆栈,无法代理请求,就好像它试图将流量转发到没有更多的现有容器,这使得集成和行为测试失败.是否有一种方法可以在不使用docker stack rm的情况下进行一致的部署(到目前为止看起来非常错误)但是应用了yml compose文件的最新状态?

orchestration docker docker-compose docker-swarm-mode

3
推荐指数
1
解决办法
1104
查看次数

docker stack rm后跟部署失败并在连续构建上运行

Jenkins构建部分中的Bash脚本

#!/bin/sh

docker build -t smstake:latest .

#Push to the private  repository applying the proper tags for the image
docker tag smstake:latest reg01.dev.01cloud.com:5000/smstake:1.0.1
docker push reg01.dev.01cloud.com:5000/smstake:1.0.1

docker stack rm smstake
docker stack deploy -c docker-compose.yml smstake
Run Code Online (Sandbox Code Playgroud)
  1. 在这里,我正在创建一个泊坞窗图像
  2. 添加适当的标签以推送到私有存储库
  3. 删除堆栈(如果存在),而不是再次部署堆栈.

问题是它在第一次构建时失败了,并且发布了一些网络问题.如果再次构建,它将在另一个构建上成功运行.我该如何解决这个问题.

我得到的错误:

Removing service smstake_app
Removing service smstake_db
Removing service smstake_phpmyadmin
Removing network smstake_smstake
Creating service smstake_app
failed to create service smstake_app: Error response from daemon: network smstake_smstake not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)

正如我们可以看到它删除服务并在服务创建过程中抛出网络未发现问题. …

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

3
推荐指数
1
解决办法
688
查看次数

Docker Swarm覆盖网络在节点之间不起作用

我试图在docker swarm中将我的docker服务连接在一起。

网络由2个覆盆子pi组成。

我可以创建一个名为的覆盖网络,test-overlay并且可以看到任何一个树莓派节点上的服务都可以连接到该网络。

我的问题:

我无法链接到覆盖网络节点之间的服务。

给定以下节点和服务配置,service1可以使用该地址http://service2连接到 service2。但不适用于http://service3。但是http://service3可以从访问service4

node1:
  - service1
  - service2
node2:
  - service3
  - service4
Run Code Online (Sandbox Code Playgroud)

我是docker swarm的新手,感谢您的帮助。

检查覆盖

sudo docker inspect network test-overlay在两个节点上都运行了命令。

在主节点上,这将返回以下内容:

[
    {
        "Name": "test-overlay",
        "Id": "skxhz8sb3f82dhh9jt9t3j5yl",
        "Created": "2018-04-15T20:31:20.629719732Z",
        "Scope": "swarm",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "10.0.0.0/24",
                    "Gateway": "10.0.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": { …
Run Code Online (Sandbox Code Playgroud)

networking docker docker-swarm docker-swarm-mode

3
推荐指数
1
解决办法
4113
查看次数

在创建 docker 服务时检测到某些图像的任务失败

我正在尝试创建 docker swarm 服务,但出现了一些奇怪的行为:

对于某些图像,它是成功的,对于某些图像,我收到错误消息:

docker service create nginx 89t21k3udf007pvl2ucvmdp9l overall progress: 1 out of 1 tasks 1/1: running [==================================================>] verify: Service converged --> 成功

docker service create hello-world 8hhdki32ypfwshh2wvijkkmvb overall progress: 0 out of 1 tasks 1/1: preparing [=================================> ] verify: Detected task failure --> 失败

供您参考:docker pull hello-world工作正常。

我的印象是我们可以为所有图像创建服务,是否有任何条款和条件?我错过了什么吗?

注意:这是基本部分,但我的主要目的是为本地注册表镜像创建服务。但是在调试的第一步中发现了问题,即hello-world。

docker docker-swarm docker-swarm-mode

3
推荐指数
1
解决办法
6078
查看次数

是否可以在docker swarm服务中获取所有正在运行的容器ID?

我是docker swarm模式的新手,如果我想了解我的swarm服务的更多详细信息,可以从命令行运行docker service ps“服务名”,也可以从docker rest运行“ / v2 / services / my-ngx”

[msreddy@swarmnode1 ~]$ docker service ps my-ngx ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS voj7fllhnmqb my-ngx.1 nginx:latest swarmnode1 Running Running 26 minutes ago

但是它没有给我容器ID。我想从群服务中跟踪容器吗?

docker docker-swarm docker-swarm-mode

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

swarm 中的副本数量不是从工作节点开始的 (1/4)

我在具有 1 个主节点和 3 个工作节点的 docker swarm 集群上启动了 Flask API 服务。我已经使用以下 docker compose 文件部署了任务,

version: '3'

services:
  xgboost-model-api:
image: xgboost-model-api
  ports:
    - "5000:5000"
deploy:
  mode: global
networks:
  - xgboost-net

networks:
   xgboost-net:
Run Code Online (Sandbox Code Playgroud)

我使用以下 docker swarm 命令部署了该任务,

docker stack deploy --compose-file docker-compose.yml xgboost-swarm
Run Code Online (Sandbox Code Playgroud)

但是,该任务仅在我的主节点上启动,而不在任何工作节点上启动。

$ docker service ls
ID            NAME                             MODE        REPLICAS  IMAGE
pgd8cktr4foz  viz                              replicated  1/1       
dockersamples/visualizer
twrpr4av4c7f  xgboost-swarm_xgboost-model-api  global      1/4       xgboost-model-api
xxrfn1w7eqw6  dockercloud-server-proxy         global      1/1       dockercloud/server-proxy 
Run Code Online (Sandbox Code Playgroud)

使用的 Dockerfile 在这里。任何关于为什么会发生这种行为的想法将不胜感激。

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

0
推荐指数
1
解决办法
2311
查看次数