标签: docker-swarm-mode

如何远程连接docker swarm?

是否可以从我的本地mac在云托管的docker swarm集群上执行命令?如果有,怎么样?

我想执行命令,例如从我的本地执行docker swarm:

docker create secret my-secret <address to local file>
docker service create --name x --secrets my-secret image
Run Code Online (Sandbox Code Playgroud)

docker docker-swarm docker-swarm-mode docker-secrets

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

如何在部署注册表时解决此问题"docker swarm中没有合适的节点(1节点上不满足调度约束)"?

我在一个虚拟机中有一个docker swarm,它有2个核心4GB ram Centos.

在我部署docker私有注册表(注册表2.6.4)时,它将服务状态显示为永久挂起.我用了 docker service ps <<registry_name>>

当我docker inspect <<task_id>>在消息中检查使用时,我得到了 "没有合适的节点(在1节点上不满足调度约束)".

我尝试了服务重启和重新部署.

如何解决这个问题?

docker docker-registry docker-swarm docker-swarm-mode

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

在Docker Swarm模式下使用副本的主要优点是什么?

我很难理解replicaDocker Swarm模式中实例的想法.我已经读过它是一个有助于提高可用性的功能.

但是,如果一个节点发生故障,即使replica为服务定义了一个节点,Docker也会自动在另一个节点上启动新任务,这也提供了高可用性.

那么,replica对于任意服务,有3个实例而不是1 个实例的优势是什么?我的假设是,如果有更多副本,Docker会在发生故障时花费更少的时间在另一个节点上创建新实例,这有助于提高性能.它是否正确?

docker docker-swarm-mode

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

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

我正在尝试在堆栈部署后向堆栈添加服务。但是这个新服务在与堆栈内的服务(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
查看次数

如何让nginx等待我的上游服务在Docker Swarm中启动?

我将nginx代理服务和rails应用服务部署到docker swarm中.nginx依赖于我的docker-compose文件中的应用程序.

我的nginx.conf文件将流量定向到我的上游应用服务(在端口3000上公开),如此(仅显示上游部分).

upstream puma {
  server app:3000;
}
Run Code Online (Sandbox Code Playgroud)

我的docker-compose文件看起来像这样:

version: '3.1'

services:

  app:
    image: my/rails-app:latest
    networks:
      - proxy

  web:
    image: my/nginx:1.11.9-alpine
    command: /bin/sh -c "nginx -g 'daemon off;'"
    ports:
      - "80:80"
    depends_on:
      - app
    networks:
      - proxy


networks:

  proxy:
    external: true
Run Code Online (Sandbox Code Playgroud)

我的主机设置为群体管理器.

这一切都很好 - 没有问题.

但是,即使我在docker-compose文件中有一个depends部分 - 在nginx服务启动时,app服务可能还没有完全准备好(?),所以当上游服务配置部分尝试DNS解析"app: 3000",似乎没有完全找到它.因此,当我访问我的网站时,我在我的nginx日志中发现以下错误消息:

2017/02/13 10:46:07 [error] 8#8: *6 connect() failed (111: Connection refused) while connecting to upstream, client: 10.255.0.3, server: www.mysite.com, request: "GET / HTTP/1.1", upstream: "http://127.0.53.53:3000/", host: …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails nginx docker-swarm-mode

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

客户端访问docker swarm

我有一个由一个管理器和一个工作节点组成的docker swarm集群.然后我从笔记本电脑配置(tlsDOCKER_HOST)客户端以访问此群集.

当我运行时,docker ps我只看到来自工作节点的容器(而不是工作节点(!)的所有容器).例如,来自我的客户:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                                                                                                                                      NAMES
a129d9402aeb        progrium/consul     "/bin/start -rejoi..."   2 weeks ago         Up 22 hours         IP:8300-8302->8300-8302/tcp, IP:8400->8400/tcp, IP:8301-8302->8301-8302/udp, 53/tcp, 53/udp, IP:8500->8500/tcp, IP:8600->8600/udp   hadoop1103/consul-agt2-hadoop 
Run Code Online (Sandbox Code Playgroud)

docker ps在工作节点上运行:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                                                                                                        NAMES
4fec7fbf0b00        swarm               "/swarm join --advert"   16 hours ago        Up 16 hours         2375/tcp                                                                                                                                                     join
a129d9402aeb        progrium/consul     "/bin/start -rejoin -"   2 weeks ago         Up 22 hours         0.0.0.0:8300-8302->8300-8302/tcp, 0.0.0.0:8400->8400/tcp, 0.0.0.0:8301-8302->8301-8302/udp, 53/tcp, 53/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp   consul-agt2-hadoop …
Run Code Online (Sandbox Code Playgroud)

docker docker-swarm docker-swarm-mode

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

如何使用docker swarm维护粘性会话(会话持久性)?

我有一个基于Java的Web应用程序部署在jboss-10.1.0(wildfly).我正在使用docker swarm模式(docker版本1.12.1)扩展我的应用程序一切正常,但我面临的唯一问题是会话管理.

现在让我们来看看情景.

我有两个实例正在运行我的应用程序(即App1App2).我使用docker swarm模式提供的默认负载均衡器nginx来重定向我的应用程序chintan.test.com:9080,chintan.test.com:80以便我不需要用我的url写下端口,我能够直接使用此URL访问chintan.test.com.

现在,默认的负载均衡器正在使用RR(Round-Robin algorithm)来提供我的Web请求.所以我第一次访问chintan.test.com它时会转到App1实例并显示登录页面我使用凭据登录,一切都运行完美,几分钟后它又切换到App2登录页面来了.

有没有办法或工具(应该是开源的)我通过它来处理会话?所以至少我登录App1并坚持到App1我退出为止.

谢谢!

load-balancing docker wildfly docker-swarm docker-swarm-mode

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

Docker Swarm 模式路由网格不适用于wireguard VPN

我正在尝试在 Hetzner 云上设置一个 3 节点 Docker swarm 集群,使用wireguard VPN(在接口上设置wg0)在节点之间构建本地网络。网络可以跨使用VPN的IP节点罚款(端口7946/tcp7946/udp并且4789/udp是开放的报道在这里)。我使用以下命令启动 docker swarm 集群:

docker swarm init --advertise-addr wg0 --listen-addr wg0
docker swarm join --token SWMTKN-1-xxx --advertise-addr wg0 --listen-addr wg0 10.0.0.1:2377
Run Code Online (Sandbox Code Playgroud)

如果我尝试在这个 swarm 上运行一个服务,它似乎运行正确,每个容器都可以在不同的节点上到达另一个节点并检查它们,它们加入了入口网络和我创建的覆盖网络,正如预期的那样。当我尝试从服务公开端口之外访问时出现问题;它仅在我以容器运行的节点为目标时才有效,因此似乎路由网格无法正常工作。我在 docker 日志或系统日志中没有发现任何错误。

注意:我正在使用 docker 18.06.1-ce

vpn docker docker-swarm docker-swarm-mode

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

Docker Swarm,不在同一本地网络但可通过 IP 访问的多个主机

我看到很多在集群模式下运行多个 Docker 节点的示例,但它们都提到节点共享本地/专用网络。我想知道,是否可以连接群上不在专用网络上的两台主机,但仍然可以通过 IP 相互访问并设置正确的端口?

在此输入图像描述

这不适用于生产设置。

是否有任何 Swarm 机制可以阻止这种架构?

感谢您的时间 !

docker docker-swarm docker-swarm-mode

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

在一个节点上部署docker堆栈(共同调度容器,如docker swarm)

我知道docker-swose与docker-swarm(现在是遗留的)能够在一个节点上共同调度一些服务(使用依赖性过滤器,如链接)

我想知道使用现代docker引擎群模式和Docker 1.13中引入的新堆栈部署是否可以实现这种协同调度

在docker-compose文件版本3中,在群集中部署堆栈时会说链接被忽略,因此显然链接不是解决方案.

我们有一堆服务器来运行批量短期运行的作业,它们之间的网络速度不是很高.我们希望在一台服务器上运行每个批处理作业(由多个容器组成),以避免网络开销.这个功能是在docker stack或docker swarm模式下实现的,还是我们应该使用传统的docker-swarm?

此外,我找不到放置策略中与另一个容器的共同调度.

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

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