标签: docker-swarm-mode

何时使用Docker-Compose以及何时使用Docker-Swarm

我试图理解D-ComposeD-Swarm之间的差异或相似之处.

通过阅读文档,我了解到docker-compose提供了一种机制,可以将不同的容器绑定在一起并协同工作,作为单个服务(我猜它使用与用于链接两个容器的--link命令相同的功能)

另外,我对docker-swarm的理解是它允许你管理不同docker-hosts的集群,每个docker-hosts都运行一些docker-images的几个容器实例.我们可以将连接定义为群中不同容器之间的覆盖网络(即使它们跨越群中的两个泊坞主机)将它们作为一个单元连接起来.

我想要了解的是docker-swarm成功的docker-compose和覆盖网络是连接容器的新(推荐)方式吗?

或者,docker-compose仍然是整个docker系列中不可或缺的一部分,并且可以使用它来连接容器以协同工作.如果是这样,docker-compose在群中的不同节点上使用容器?

或者是覆盖网络用于连接群集中不同主机的容器,而docker-compose用于创建内部链接?

此外,我还看到在docker文档中提到 -不再推荐链接,很快就会过时.

我有点困惑???

非常感谢!

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

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

堆栈文件和Compose文件之间有什么区别?

我正在学习如何使用Docker Compose在多个主机上的多个容器中部署应用程序.我遇到了两个配置文件 - 堆栈文件和Compose文件.

云堆栈文件YAML引用中,它指出堆栈文件是YAML格式的文件,它定义一个或多个服务,类似于docker-compose.yml文件但具有一些扩展名.

这篇文章中,它指出堆栈与docker-compose非常相似,除了它们定义服务而docker-compose定义容器.

它们看起来非常相似,所以我想知道何时使用堆栈文件,何时使用Compose文件?

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

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

网络和负载均衡器如何在docker swarm模式下工作?

我是Dockers和容器的新手.我正在浏览docker的教程,并发现了这些信息. https://docs.docker.com/get-started/part3/#docker-composeyml

   networks:
     - webnet
networks:
  webnet:
Run Code Online (Sandbox Code Playgroud)

什么是网络?该文件说

指示Web容器通过称为webnet的负载平衡网络共享端口80.(在内部,容器本身将在短暂的端口发布到Web的端口80.)

那么,默认情况下,覆盖网络在docker集群中是负载均衡的?什么是负载平衡算法使用?

实际上,我不清楚为什么我们在覆盖网络上进行负载平衡.

networking load-balancing docker docker-swarm-mode

24
推荐指数
1
解决办法
4309
查看次数

如何在Docker-Swarm模式下完成负载平衡

我正在开发一个使用docker-swarm建立云架构的项目.我知道使用swarm我可以部署服务的副本,这意味着该图像的多个容器将运行以服务请求.

我还读到docker有一个内部负载均衡器来管理这个请求分配.

但是,我需要帮助理解以下内容:

假设我有一个容器,将服务公开为REST API或说它是一个Web应用程序.如果我在swarm中部署了多个容器(副本),并且我有其他容器(运行一些应用程序)与此HTTP/REST服务通信.

然后,当我写那些IP:PORT组合的应用程序时,我会使用吗?是否有任何工作节点IP运行这些服务?即使在运行相同服务的其他工作人员/经理之间,这样做是否会适当地分配负载?

或者我应该调用管理器,而管理器又适当地处理路由(即使管理器节点没有运行此特定服务的容器)?

谢谢.

load-balancing docker docker-swarm-mode

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

如何使用docker compose v3直接在容器中挂载NFS共享/卷

我有一个v3的撰写文件,其中有3个服务共享/使用相同的卷.在使用swarm模式时,我们需要创建额外的容器和卷来管理整个群集中的服务.

我打算使用NFS服务器,以便将单个NFS共享直接挂载到群集中的所有主机上.

我在下面找到了两种方法,但它需要在docker主机上执行额外的步骤 -

有没有一种标准的方法,我可以使用docker compose v3直接使用/挂载NFS共享,只需执行少量/无步骤(我知道无论如何都需要"nfs-common"包)在docker主机上?

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

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

如何禁用docker swarm模式?

我已经启用了docker swarm进行本地测试.现在,无论何时尝试部署使用,docker-compose up我都会看到以下警告:

警告:您正在使用的Docker Engine正在以群集模式运行.

Compose不使用swarm模式将服务部署到swarm中的多个节点.将在当前节点上安排所有容器.

要跨群集部署应用程序,请使用docker stack deploy.

如何禁用docker swarm模式?

docker docker-swarm docker-swarm-mode

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

如何在docker引擎群模式下跨多个主机共享卷?

我们可以在docker engine swarm模式下跨多个主机共享一个公共/单个命名卷,这是最简单的方法吗?

docker docker-swarm docker-engine docker-swarm-mode

18
推荐指数
1
解决办法
5333
查看次数

将etcd集群自动配置为Docker swarm服务

我想找到一种方法将etcd集群部署为Docker Swarm服务,该服务将自动配置而无需任何交互.基本上,我想到了这个命令的精神:

docker service create --name etcd --replicas 3 my-custom-image/etcd
Run Code Online (Sandbox Code Playgroud)

我假设覆盖网络配置为安全并提供加密和身份验证,所以我相信我不需要TLS,甚至不需要--auto-tls.当这可以在另一层上解决时,不希望额外的头痛找到提供证书的方法.

我需要--name为每个实例都有一个唯一的,但是我可以从一个可以使用的入口点脚本中获得它export ETCD_NAME=$(hostname --short).

问题是,我坚持初始配置.根据聚类指南,有三个选项,但似乎都不适合:

  • DNS发现场景最接近我正在寻找的,但Docker 目前不支持DNS SRV记录发现.我可以查找etcd,我将获得节点容器的所有IP,但没有_etcd-server._tcp记录.
  • 我不能自动构建,ETCD_INITIAL_CLUSTER因为虽然我知道IP,但我不知道其他节点的名称,我不知道有任何方法可以解决这些问题.(我不打算将Docker API套接字暴露给etcd容器.)
  • 没有预先存在的etcd集群,虽然从discovery.etcd.io提供初始配置URI是一种可能的解决方法,我有兴趣不这样做.我的目标是"只需从这部署一个堆栈docker-compose.yml,它就会自动做正确的事情,没有问题就是这样".

有什么技巧可以拉吗?

deployment configuration docker etcd docker-swarm-mode

18
推荐指数
1
解决办法
1092
查看次数

什么是覆盖网络以及DNS解析如何工作?

我无法mongodbdocker swarm群集连接到外部服务器.

据我了解这是因为集群使用覆盖网络驱动程序.我对吗?

如果没有,docker overlay驱动程序如何工作以及如何mongodb从群集连接到外部服务器?

networking docker docker-swarm docker-swarm-mode

15
推荐指数
1
解决办法
6607
查看次数

Docker Swarm模式错误:将两个工作者连接到一个管理器

我在设置一个有两个工人和一个经理的Docker Swarm时遇到了困难.一切正常,直到我添加第二个工人.添加第二个worker后,第一个worker的守护进程会进入某种错误状态,其中一个简单的docker version收益

在此输入图像描述

另外,我使用Stack YAML启动三个Redis服务.

Stack.yaml

version: '3.4'

services:
  redis-master:
    image: 'bitnami/redis:5.0.2'
    ports:
      - '6379:6379'
    environment:
      - REDIS_REPLICATION_MODE=master 
      - REDIS_PASSWORD=f7paul12-d571-4701-9c55-64vanacecDyK
    deploy:
      mode: global
      restart_policy:
        condition: any
    volumes: 
      - 'redis:/opt/bitnami/redis/etc/'

  redis-replica:
    image: 'bitnami/redis:5.0.2'
    ports:
      - '6379'
    depends_on:
      - redis-master
    environment:
      - REDIS_REPLICATION_MODE=slave
      - REDIS_MASTER_HOST=redis-master
      - REDIS_MASTER_PORT_NUMBER=6379
      - REDIS_MASTER_PASSWORD=f7paul12-d571-4701-9c55-64vanacecDyK
      - REDIS_PASSWORD=f7paul12-d571-4701-9c55-64vanacecDyK
    deploy:
      mode: replicated
      replicas: 6
      update_config:
        parallelism: 1
        delay: 20s
      restart_policy:
        condition: any

  redis-sentinel:
    image: 'bitnami/redis:5.0.2'
    ports:
      - '16379'
    depends_on:
      - redis-master
      - redis-replica
    entrypoint: |
      bash -c 'bash …
Run Code Online (Sandbox Code Playgroud)

docker docker-swarm docker-machine docker-swarm-mode docker-stack

11
推荐指数
1
解决办法
167
查看次数