标签: docker-swarm

如何在没有 swarm 集群的情况下使用 docker secrets?

目前我们是在单个 docker 容器上运行的应用程序,该应用程序需要将各种敏感数据作为环境变量传递,

我将它们放在运行命令中,这样它们就不会出现在图像中,然后出现在存储库中,但是我最终得到了一个非常不安全的运行命令,

现在,我知道存在 docker 机密,但是,如何在不部署集群的情况下使用它们?或者有没有其他方法来保护这些数据?

此致,

security docker docker-swarm

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

如何删除不存在的docker网络?

我有一个带有 3 个节点的 docker swarm 配置。有一个网络仅位于其中一个节点上。在该特定节点上,docker network ls显示网络,显示docker network rm [network-id]来自守护进程的错误响应:网络...未找到”,同时docker network inspect [network-id]显示网络,它看起来不错(范围:swarm,驱动程序:覆盖)。完全像我并行创建的测试方式来比较它。有人知道吗?我怎样才能摆脱那个网络僵尸?

networking zombie docker docker-swarm

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

列出 docker swarm 模式所有节点的容器

我们在几个节点上以 swarm 模式运行 docker。

找不到一种快速简便的方法来从管理器节点列出 swarm 中的所有容器(最好带有状态)。人们可以看到覆盖网络和连接到这些网络的本地运行的容器,还有服务——但不能看到容器的详细信息等。

它是否已经可用,或者使用 REST API 是唯一可用的选项?(但不确定那里是否提供了所有必需的信息)

docker docker-swarm

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

docker swarm 数据库连接由对等方重置

我正在使用 docker swarm 运行 Spring Boot 应用程序,并且我使用 postgres 作为数据库。当我将它们都作为 docker 服务运行时,数据库连接会持续且随机地失败(如您在时间戳上所见),如日志所示:

2017-10-26T 17:14:15 .200415747Z app-db.1.1ayo6h8ro1og@scw-c2964a | 日志:无法从客户端接收数据:对等方重置连接

2017-10-26T 17:43:36 .481718562Z app-db.1.1ayo6h8ro1og@scw-c2964a | 日志:无法从客户端接收数据:对等方重置连接

2017-10-26T 17:43:56 .954152654Z app-db.1.1ayo6h8ro1og@scw-c2964a | 日志:无法从客户端接收数据:对等方重置连接

2017-10-26T 17:44:17 .434171472Z app-db.1.1ayo6h8ro1og@scw-c2964a | 日志:无法从客户端接收数据:对等方重置连接

2017-10-26T 17:49:04 .154174253Z app-db.1.1ayo6h8ro1og@scw-c2964a | 日志:无法从客户端接收数据:对等方重置连接

我无法理解或发现这样做的原因。我很感激任何想法。

编辑:

我们意识到,在测试应用程序时,它也会抛出这样的错误:

SQLTransientConnectionException: HikariPool-1 - 连接不可用,请求在 937517 毫秒后超时

谢谢。

postgresql database docker docker-swarm

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

在 Docker swarm 模式下使用私有物理网络

我正在使用 Docker 以 swarm 模式(使用 Docker 17.03.1-ce)进行生产设置。将涉及2个数据中心。在两个数据中心,所有机器在私有网络上都有一个公共 IP 和一个私有(数据中心本地)IP,所以会有 2 个私有网络。

链接到简化的图表可视化设置

专用网络接口上的网络流量是免费的,而公共接口上的流量不受限制(而且速度较慢),因此在可能的情况下,我更希望网络流量通过专用接口。

现在,据我所知(我认为),集群模式下 Docker 节点之间的所有流量都将通过用于与集群主机通信的相同网络接口,在我的情况下,必须是公共接口才能进行多 DC 网络可能的。然而,大多数预期的流量将在同一个 DC 中的节点之间发生,如果源节点和目标节点碰巧在同一个私有网络上,如果 Docker 能够以某种方式通过我的私有网络路由流量,那就太好了。

恐怕这可能无法开箱即用,因为群主不知道这些专用网络以及节点在其上拥有的 IP。

我能想到的一个解决方案是设置一个 VPN 并在其上部署 swarm,但这会增加额外的复杂性,我更喜欢纯 Docker swarm 解决方案。


更新:正如评论中所建议的,解决方案的基础可能是使用 iptables 将传出流量路由到私有 IP 而不是公共 IP。但是,如果我想这样做,我的下一个问题将是如何管理所有这些规则。在 DC 中有 10 个服务器,我需要 10 * 9 = 90 个服务器来通过专用网络路由所有可能的本地流量。我可以想象,也许存在一些工具可以帮助完成这样的任务,或者我可以创建一个,但也许有一种更简单的方法来做到这一点。

networking docker docker-swarm

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

如何访问另一个堆栈中的服务?

我有一个 docker swarm 配置,在那里我部署了两个堆栈(mainmon),我可以在一个堆栈中公开一个端口,我可以从另一个堆栈中引用它。但是,我试图找到一种不这样做的方法,而是让它使用 127.0.0.11 DNS 访问它。

mon我有一项名为grafana

使用https://docs.docker.com/docker-cloud/apps/service-links/#discovering-services-or-containers-on-another-stack这表明我可以使用堆栈名称来引用它没有当我尝试ping grafana.mon它时,它只返回无效的主机名。

docker docker-swarm

8
推荐指数
1
解决办法
5814
查看次数

在 swarm 模式下运行 Docker 时,HEALTHCHECK 的真正用途是什么?

我很难弄清楚HEALTHCHECK在 swarm 模式下运行 Docker 时的真正用途。

一个地方建议Docker 将重新启动一项被认为是不健康的任务。另一个地方解释说 Docker 将停止向不健康的任务发送流量Docker 文档本身只解释了HEALTHCHECK指令是什么,以及如何配置它。它没有试图解释当任务不健康时会发生什么。

换句话说,我正在努力寻找一个清晰可靠的解释来解释什么是HEALTCHECK真正的。

此外,查看Docker REST API,这个特定的数据(任务是否健康)甚至没有为任务公开(尽管它为容器公开)。这使得使用该指标来监控 Docker Swarm 变得很困难,所以在我看来,这也不是该指标的主要目的。

当在 swarm 模式下运行 Docker 时任务变得不健康时,真正会发生什么?

healthcheck docker-swarm

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

kubernetes 中的 WEBRTC MCU/SFU - 端口范围?

我使用janus-gateway作为用于群组视频通话的 webrtc 媒体服务器。以前我使用 docker-compose 将它部署在单个节点中,但现在我希望能够水平扩展它。为此,我正在尝试使用 kubernetes,但我面临两个问题:

1:指定要为媒体服务器公开的端口范围。由于媒体服务器需要一个端口范围才能运行,我可以在 docker-compose 中使用以下代码进行操作

janus-gateway:
 build: ./gateway
 image: janus-gateway-image
 restart: always
 ports:
   -  8088:8088
   -  8188:8188
   -  7088:7088
   -  "10000-10200:10000-10200/udp"
 networks:
  - back-tier
Run Code Online (Sandbox Code Playgroud)

但是我无法在 kubernetes 中找到任何替代方案。如何使用 kubernetes 公开端口范围。

2:如何从我的 nodejs 应用程序连接到网关的特定实例。所以假设网关的两个实例正在运行,现在当用户连接到应用程序时,我将它连接到正在运行的两个实例之一并将其保存在 redis 中,并确保来自该用户的任何请求都传递到该特定实例. 如何从节点连接到特定副本?还获取副本列表?

我已经在 kuebernetes 上检查过这个问题,但它仍然没有解决。有什么解决方法吗?

docker kubernetes docker-compose webrtc docker-swarm

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

如何在 docker swarm 模式服务调用上设置 Linux 功能

我正在研究在 swarm (1.12.x) 下运行的保险库的概念。

单个容器将启动: docker run -d --cap-add IPC_LOCK -p 8200:8200 -p 8215:8125 --name vault --volume /vagrant/vault:/vagrant/vault vault server -config=/path/to/vault.hcl

但是当我想在 swarm 作为服务运行它时,似乎无法指定IPC_LOCK功能,以便在这种情况下锁定 Vault 服务的加密交换。

使用docker service create命令启动群模式服务时如何设置 --cap-add 标志?

docker docker-swarm

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

docker swarm 服务前的 nginx

我在思考这意味着如何认真地完成数周,但尚未得出结论。也许我想错了方向。

假设您有一百个网络应用程序来来去去。你想要一个像 gitlab 这样的 nginx 配置:

location / {
  proxy_pass http://gitlab;
}
Run Code Online (Sandbox Code Playgroud)

由于 gitlab 是用 来创建的docker service create,nginx 将能够通过它在你的入口网络中的 swarm-vip 假 dns 名称来解析 gitlab。

但是:仅当服务容器正在运行时。否则,nginx 将无法启动,因为 [emerg] 1#1: host not found in upstream "gitlab"

现在,当您必须运行高可用性 nginx 并且确保 proxy_pass 的应用程序正在运行不是您的业务时,这将是一个难题。

每次更新 nginx 服务时,如果其他一百个 swarm 服务中只有一个在同一秒内没有运行,它就不会出现……wtf?

如果这不起作用,为什么我们需要在 swarm 中进行名称解析?你怎么解决这个问题?

我考虑过 consul 和 nginx 虚拟主机模板的动态生成(甚至不要考虑 docker-nginx-proxy!),但是应用程序非常不同,您可以说每个应用程序都有自己的单独配置。而这一切工作不是为了特殊原因,只是为了解决nginx的解决问题?

nginx docker docker-swarm

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