问题标签 [docker-swarm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - 我可以拥有一个 Docker Swarm Manager 和不同的集群吗?
我刚刚重新查看了 Docker Swarm,我想知道是否可以拥有一个中央 Swarm 管理器并让它管理n
Swarm 代理集群。
用例:
考虑一个允许人们构建自己的 docker 集群的服务(称为 DockerServ)。DockerServ 将有一个单一的 Swarm 管理器,可以在不同的集群中启动容器。
问题:
- 这是可能的还是每个集群中都必须有一个 Swarm Manager。
- 我是否能够从其中一个集群中的节点查看所有集群中的容器(考虑到集群可能属于对其集群中的节点具有 SSH 访问权限的不同人)?
- 这会带来任何安全问题(假设 DockerServ 的每个集群都有不同的所有者?)
结论
如果这是一种完全错误的方法,那么实现它的最佳方法是什么?任何资源将不胜感激。
networking - 跨主机共享容器 ip 和端口
我们有一组分布在多个主机上的 docker 容器。一些容器属于同一个逻辑组,即网络,因此容器应该能够直接对话,访问彼此的 IP 和端口(由 docker 随机分配)。
这种情况类似于您在一台主机上使用Docker 1.10 和 docker-compose 1.6x 中的网络,但分布在多台主机上。
我知道带有 etcd/zookeeper 的 swarm 可以管理和连接 docker 集群,但我不知道我在一个容器中的应用程序如何知道另一台主机上其他容器中另一部分的 IP 地址和端口。
docker - 使用 Marathon 在 Docker Swarm 上运行 Docker 容器?
我成功地将 Docker Swarm 与 mesos 集成,一切正常。
但现在我只能从命令行启动 Docker swarm 上的容器,如下所示:
我在集群中使用 Marathon 进行作业调度;有什么方法可以使用 Marathon 在与 mesos 集成的 docker swarm 上启动 docker 容器?
是否可以使用 Marathon 以外的其他调度程序来执行此操作?
docker - 如何在不使用 docker-machine 命令的情况下在 docker 中创建覆盖网络
Docker 文档解释了如何使用命令创建覆盖网络
问题是我没有使用 docker-machine 来设置我的集群。当我尝试创建覆盖网络时出现错误。
在我的 swarm master 上执行的命令(监听端口 4000)
执行命令时遇到的异常
docker - Docker Swarm Master 应该是单独的物理节点吗?
我正在进入 Docker Swarm,这是我找不到答案的问题......
我有 3 台物理主机,我想创建一个集群。我应该使用单独的(第 4 台)物理主机来运行 Swarm 主服务器,再使用一台来运行 KV 存储,或者我可以在这 3 台主机中的一台中运行它们并且仍然能够将它们全部用作 Swarm 节点?
谢谢。
ubuntu - 如何使用 AWS ubuntu 机器设置 docker swarm 集群
我收到以下错误。在 swarm 集群中创建和运行容器时。
我遵循的步骤。
创建了一个 VPC 并添加了一个允许所有端口号的安全组。
在 AWS 中创建了 3 台 ubuntu 机器(manager、slave1、slave2)
首先使用以下命令启动 Consul 节点
docker run --restart=unless-stopped -d -p 8500:8500 -h consul1 progrium/consul -server -bootstrap
然后在同一台机器上启动了一个 swarm manager
docker run --restart=unless-stopped -d -p 3375:2375 swarm manage consul://172.31.17.163:8500
然后将2个奴隶添加到它
docker -H=tcp://slave1ip:2375 --restart=unless-stopped run -d swarm join --advertise=slave1ip:2375 consul://172.31.17.163:8500
docker -H=tcp://slave2ip:2375 --restart=unless-stopped run -d swarm join --advertise=slave2ip:2375 consul://172.31.17.163:8500
在 swarm manger 机器中添加了领事商店
DOCKER_OPTS="--cluster-store=consul://172.31.17.163:8500 --cluster-advertise=eth0:2375 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker 。短袜”
码头工人信息
导出 DOCKER_HOST=tcp://172.31.17.163:3375
码头工人运行你好世界
它执行得很完美。我可以看到容器使用传播策略创建从属
现在我只是尝试创建
码头工人-compose.yml
码头工人组成
这表示以下错误。
它给出了同样的错误
docker network create -d 覆盖 myapp
所以问题是,这不是用我当前的配置创建覆盖网络。
如何解决此错误?
docker - 实现按需 docker 容器启动
情况:许多重型 docker conainers 会定期受到攻击一段时间,然后在较长时间内保持未使用状态。
希望:按需启动容器(如 systemd 通过套接字激活启动事物)并在空闲一段时间后停止它们。最终用户没有可见的停机时间。
选项:
- Kubernetes 具有可以扩展副本的资源控制器。我想可以将副本数保持为 0,并在需要时将其设置为 1,但是如何实现呢?用户指南说有一种叫做自动缩放控制代理的东西,但我没有看到任何进一步的信息。是否有一个可插入的、可编程的代理可以用来跟踪请求并根据用户定义的逻辑进行扩展?
- 我在 Docker Swarm 中没有看到任何解决方案,如果我错了,请纠正我。
- 使用以所选语言编写的自定义 http 服务器,该服务器可以访问 docker 守护进程。在路由到正确位置之前,它会检查容器是否存在并确保它正在运行。缺点 - 不是通用解决方案,必须不是容器或有权访问守护程序。
- 如此处所述使用 systemd 。与上面相同的缺点,即不通用,必须自己处理网络任务(例如查找生成容器的 IP 并将其输入服务器/代理的配置)。
任何想法表示赞赏!
nginx - 如何在 docker swarm 上部署应用程序并将该 IP 地址公开给 A 记录
我已经使用 nginx 成功设置了 docker swarm 集群。在我的 ec2 实例上。使用本教程
https://botleg.com/stories/load-balancing-with-docker-swarm/
我正在这样使用
经理 1
节点 1
节点 2
我正在使用带有注册器的 consol 来进行服务发现。
在 Consul Machine docker run --restart=unless-stopped -d -p 8500:8500 -h consul progrium/consul -server -bootstrap
群管理器 docker run --restart=unless-stopped -d -p 3375:2375 群管理 --replication --advertise=mangerip:3375 consul://consulip:8500/
docker run --restart=unless-stopped -d --name=registrator -h=host --volume=/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator:latest consul://consulip: 8500
Node1 docker run --restart=unless-stopped -d swarm join --advertise=node1ip:2375 consul://consulip:8500/
docker run --restart=unless-stopped -d --name=registrator -h=host --volume=/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator:latest consul://consulip: 8500
Node2 docker run --restart=unless-stopped -d swarm join --advertise=node2:2375 consul://consulip:8500/
docker run --restart=unless-stopped -d --name=registrator -h=host --volume=/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator:latest consul://consulip: 8500
我的 Dockerfile
启动.sh
默认.ctmpl
码头工人-compose.yml
这个问题,我需要哪个 IP 地址指向 A 记录,因为 docker swarm 自动拾取节点。
假设我第一次运行它可能会选择第一个节点。如果我删除它并重做所有步骤,它将选择不同的节点和不同的 ip。所以那个时候我需要改变我的A记录。为解决这个问题,
我用谷歌搜索它,我找到了 wagl。这给了我基于 DNS 的服务发现,这很酷。但我想这是非常基本的,我不知道这是否准备好生产。
请任何人告诉我,从A到Z的流程,即从部署到配置IP地址到A记录如何做。或者只是给我一些链接。
docker - Docker Swarm 分发构建镜像
情况:
我有一个带有两个代理的码头工人群。docker swarm 主守护程序在我的管理器主机(docker-machine 示例设置)上运行,带有--strategy random
选项。
脚步:
我使用 docker swarm manager 连接构建了一个新的 docker 映像
docker -H tcp://$(docker-machine ip manager):3376 build -t test123 .
我使用管理器连接启动多个容器
docker -H tcp://$(docker-machine ip manager):3376 run -d test123 sleep 20 docker -H tcp://$(docker-machine ip manager):3376 run -d test123 sleep 20 docker -H tcp://$(docker-machine ip manager):3376 run -d test123 sleep 20 docker -H tcp://$(docker-machine ip manager):3376 run -d test123 sleep 20
docker 容器始终在也用于构建映像的主机上执行。
有没有办法自动将构建映像分发到其他主机?
我知道我可以使用 docker 注册表并只是推拉图像,但我想避免这种情况。
我发现的另一个解决方案是将图像保存到 tgz 并导入它。docker-swarm 主机(管理器)上的导入会自动将映像分发给所有代理。(至少这是我观察到的)
是否有其他选择?
docker - 我真的需要 docker swarm 吗?
我有一个关于 docker swarm 的愚蠢问题。我在想我可以在两个容器中启动一个 Web 应用程序映像,在同一台服务器或两个 vm 服务器中,然后我启动一个负载平衡容器,通过 IP 和端口指向两个 Web 应用程序容器。在这种情况下,我为什么需要 docker swarm 进行集群管理?docker swarm 能带来哪些好处?我读过 docker 文档,他们只介绍什么是 swarm 以及如何使用 swarm。但我找不到为什么我必须使用 swarm 的答案。谢谢