问题标签 [docker-swarm-mode]
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.
reverse-proxy - Traefik 在同一主机中的 Swarm 模式
我正在使用 Traefik 作为我的反向代理,它运行良好,但我对 Swarm 模式下的 traefik 有一些担忧,因为反向代理在同一个集群管理器主机中(根据文档https://docs.traefik. io/user-guide/swarm-mode/)。
拜托,你能强调一下我去生产时可能面临的一些问题吗?在同一主机中拥有反向代理和集群管理器真的很糟糕吗?我有什么选择?
最好的问候, M
docker - 更正 swarm 中的服务主机名配置
我在将堆栈部署到使用docker-machine
.
所有服务都在同一个网络中,并且在本地运行时,docker-compose run..
我在使用服务名称作为主机名连接服务时没有问题,例如:
我们正在谈论一个 Ruby 应用程序,数据库配置如下;
AFAIK 这在本地开发时看起来很标准。事实上,服务使用服务名作为主机名app
正确连接到服务。postgres
这也发生在一个sidekiq
服务和一个服务上rabbitmq
。
问题是,我几乎 100% 确定我遗漏了一些非常基本的东西,当我将堆栈部署到一个集群时,服务无法看到彼此,所以当我检查一些服务的日志时我看到连接被拒绝app
服务。
我不太确定是否必须在管理器节点中配置某些内容,或者该管理器是否能够管理主机名和服务名以及物理地址之间的路由。
如果有人能让我正确地了解如何配置服务以部署到集群,我将不胜感激。正如我所提到的,这是在一个本地集群中完成的,其中 3 个节点使用创建docker-machine create...
并且我已经运行了eval $(docker-machine env manager-node)
.
提前致谢!
docker - docker stats in Swarm mode?
Im trying to setup docker in swarm mode and monitor the resource utilization of all the services/containers running in the swarm.
Docker stats on the manager node doesnt seem to show the resource utilization on the worker nodes.
Is there any way I can do this?
Thanks.
docker - Docker swarm 不发布端口
当我使用以下端口添加一些服务时,docker swarm 新服务出现错误:
当我不发布任何端口时,服务运行良好,但是当我添加它时,进程保持在“新”状态,未运行。
你有想法吗?
问候
amazon-web-services - 将堆栈部署到 Docker for AWS 的正确方法
我正在尝试将基于 docker-compose 的堆栈部署到 Docker for AWS(通过 AWS CloudFormation 创建)。
我的 compose YAML 文件在 Git 存储库和私有注册表 (Gitlab) 中的 Docker 映像中进行管理。
与 Manager 合作部署服务的正确方法是什么?
我尝试了(但失败了)几种方法:
- 无法通过 Docker API 使用本地 Docker 客户端,因为 AWS 管理器节点的 Docker 未打开 2375 端口。
- 无法将编写 YAML 和环境文件直接同步到管理器节点,因为
rsync
它没有安装在 Amazon Docker AMI 上。 - 从 Gitlab 卷曲文件似乎是一种非常不方便的方式。
谢谢
ssl - docker swarm 模式是否默认提供网络安全/加密?
在本文档中,它说:
Docker Engine swarm 模式的覆盖网络开箱即用。您还可以加密覆盖网络上不同节点上的容器之间交换的数据。要启用加密,请在创建覆盖网络时传递 --opt 加密标志:
那么如果所有容器都在上面运行,那么容器my-multi-host-network
之间的所有流量都会自动加密吗?换句话说,就好像所有容器都在运行 SSL,并且如果使用 rest 从容器 A 到容器 B 进行通信,REST 请求(或通过任何其他通信协议的请求 - AMQP 等)是否被加密?
docker - 如何链接多个 docker swarm 服务?
我是 docker 哲学的忠实粉丝(或者至少我认为我是)。即便如此,我仍然是新手,因为我似乎没有掌握使用 docker 的预期方式。
正如我目前所看到的,有两种使用 docker 的方法。
- 创建一个容器,其中包含应用程序所需的一切。
- 例如,我想要一个 Drupal 站点之类的东西。然后我会将 nginx、php、mysql 和代码放入一个容器中。我可以在 swarm 模式下将其作为服务运行并根据需要对其进行扩展。如果我需要另一个 Drupal 站点,我会运行第二个容器/服务,其中包含 nginx、php 和 mysql 以及(稍微)不同的代码。我现在需要 2 个图像来运行容器或服务。
- Pro's - 简单,我需要的一切都在一个容器中
- Con's - 无法在端口 80 上运行每个容器(因此需要反向代理或其他东西)。(不确定,但我可以想象)服务器负载更高,因为有多个容器/服务运行 nginx、php 和 mysql。
- 创建 4 个单独的容器。1 个 nginx 容器、1 个 php 容器、1 个 mysql 容器和 1 个代码/数据容器。
- 例如,我想要同一个 Drupal 站点。我现在可以将它们全部作为单独的服务运行,并随着代码容器(Drupal 站点或其他站点)数量的增加在我的服务器上扩展它们。我只需要每个容器/服务一个图像,而不是每个站点一个单独的图像。
- Pro's - 模块化,每个服务的单一职责(1 个用于数据库,1 个用于 Web 服务器等),易于仅扩展需要扩展的区域(如果请求增加,则扩展数据库,如果流量增加,则扩展 nginx 等)。
- 缺点-我不知道如何使这项工作:)。
我个人会选择根据第二个选项进行设置。有一个数据库容器/服务、nginx 容器/服务等。这对我来说似乎更灵活,也更有意义。
但是,我正在努力解决如何使这项工作。如何让 nginx 服务查看 php 服务并将 nginx 配置指向数据服务中的代码文件夹等。我已经阅读了一些关于覆盖网络的内容,但这并不清楚 nginx 将如何查找 php在单独的容器/服务中。
因此,我有 2 个(半个)问题:
- 如何使用 docker(上面的选项 1 或 2 或完全不同)?
- 如何将服务链接在一起(让 nginx 在不同的服务中查找 php)?
- (一半)我知道我是一个试图掌握这个概念的初学者,但设置一个简单的网络服务器和运行网站似乎是一项基本任务(至少,它以传统方式对我来说)但我似乎找不到我的答案随时随地在线。我认为我想使用 docker 的方式完全不符合标准,还是我看起来不够好?
docker - Docker swarm 节点无法检测到来自 swarm 中另一台主机的服务
我的目标是在一组 3 个 linux (ubuntu) 物理工作站上建立一个 docker swarm 并在其上运行一个dask集群。
我能够初始化 docker swarm 并将所有机器添加到 swarm 中。
然后我docker stack deploy -c docker-compose.yml dask-cluster
在领导者框上运行。
这里是docker-compose.yml
:
这是richardbrks/dask-cluster
:
当我部署 swarm 时,dworker
不在同一台机器上的节点dscheduler
不知道是什么dscheduler
。我 ssh 进入这些节点之一并查看了 env,dscheduler
但并不存在。我也尝试 ping dscheduler
,并得到“ping:未知主机”。
我认为 docker 应该为服务发现提供一个基于内部 dns 的服务,这样调用dscheduler
就会把我带到dschedler
节点的地址。
我的电脑是否有一些我遗漏的设置?还是我的任何文件丢失了什么?
docker - Docker swarm - docker.sock 减速
我有一个 docker swarm,我在其中部署了 3 个微服务副本。微服务的工作是让客户端下载文件。我目前正在测试最大 3GB 的大文件,并同时进行多个此类下载。我在 17.06.1-ce
我的微服务在我的服务中安装了“docker.sock”。它与我的 mac-docker-vm 上的套接字相同
我有一个 bash 脚本,无论我在微服务中还是在 mac 上执行它,都应该给我相同的输出(因为相同的套接字安装在容器内)。输出为 3 个 IP 地址。该脚本基本上只是运行“docker 检查以获取 IP 地址”。它做得很好。bash 脚本使用 docker 命令,我认为它在内部使用 docker.sock 来处理这些命令。
问题描述
- 当我让我的微服务忙(我运行的服务副本不止一个)时,它正在流式传输大量数据流,比如最多 3 个 3GB 文件流,我认为 docker sock 会变慢。我觉得这是因为当我发送下载流请求时,它会到达 REST 控制器,控制器执行 bash 脚本,并坐在那里等待脚本完成。为了验证我的理论,即脚本是瓶颈,而不是“Scala”的“Process”类,当这个瓶颈出现时,我在笔记本电脑上执行了相同的 bash 脚本。在流式传输过程中,脚本等待了超过一分钟才做出响应。请记住,无论我是从笔记本电脑还是从我的 Scala 代码(在微服务内部,它是正在使用的同一个套接字(因为安装了相同的 docker.sock))执行脚本
- 如何进一步调试以确保我的理论是正确的并绕过它?我知道这是我为支持下载文件而编写的代码库,但是我是否可能会打开一个资源,从而使套接字表现不佳?我没有在 CentOS Docker 上测试过这个。不确定那里的行为是否也会与 Mac 上的一样
docker - docker容器内的overlayfs已满
下面的输出是什么意思以及如何释放它?我什至不知道它是如何使用的。找不到太多信息。任何指针表示赞赏。我在我的 docker container-df -h.
命令中运行它。这个 docker 容器是从 docker swarm 集群上的 compose 文件部署的。我在 mac os 和 docker 版本是17.06.1-ce