问题标签 [docker-stack]

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.

0 投票
1 回答
1159 浏览

docker - docker container ls 显示没有容器

我正在从这里学习 docker 。“docker swarm init”命令给出以下输出:

Swarm 已初始化:当前节点 (oqo97zuwsetlmt9c89nmedqm0) 现在是管理器。

要将工作人员添加到此集群,请运行以下命令:

docker swarm join --token SWMTKN-1-40tj00xamvizycpqt8o78w0c0nxck3ant78t3x70ztv6f1mth8-9la5fw5wx83sicsqeup8b41fi 192.168.65.3:2377

要将管理器添加到此 swarm,请运行“docker swarm join-token manager”并按照说明进行操作。

docker service ps getstartedlab_web我展示了:

创建网络 getstartedlab_webnet

创建服务 getstartedlab_web

“docker service ls”向我展示了:

服务

“docker service ps getstartedlab_web”输出:

图2

但是,docker container ls没有显示任何容器正在运行。

如何解决这个问题?

0 投票
1 回答
92 浏览

reactjs - 在 Docker 堆栈中的哪里存储/管理容器的配置?

我正在开发一个基于 React 的网络应用程序。这个应用程序应该能够在生产中作为 Docker 容器运行。我在我的存储库中创建了一个.env.development文件,我可以在其中配置应用程序将连接到的 API 端点。

以这种方式在我的本地机器上运行容器可以正常工作。

现在我想在 Docker 堆栈中运行这个容器,所以我配置了一个docker-compose.yml.

  1. 我应该在哪里以及如何存储/管理上述配置,以便 Docker 堆栈能够获取它?有没有类似“推荐方式”的东西?
  2. environment在 的部分中定义此参数是否足够docker-compose.yml?还是我需要使用 Docker config 甚至 Docker Secrets 之类的东西?
0 投票
1 回答
262 浏览

docker - Traefik 可以在 Docker 主机上为容器创建具有固定端口的路由吗?

假设有两个 MariaDB 容器在 Docker swarm 的同一主机上运行。每个容器都有其内部端口 3306,该端口动态暴露给例如 30004 和 30056。

我想要一个外部容器(未在堆栈中定义)通过主机名和固定端口访问一个堆栈的数据库,例如mariadb_s1:3306(重定向到端口 30004 上堆栈 1 的 MariaDB),如下图所示。

我们还在 Docker 主机上运行了一个 Traefik 实例。Traefik 有能力创建这些路线吗?

原理图概览

0 投票
1 回答
146 浏览

docker - 可以在不更新 .yml 文档的情况下将新服务添加到 docker 的堆栈中吗?

我正在尝试在不更新 .yml 文档的情况下向已部署的 docker 堆栈添加新服务

我的代码是

docker stack deploy -c app.yml app

添加新服务

docker service create --name app_newservice --network app_network app_image:0.1

可视化堆栈是否添加了我运行的新服务

docker stack services app

但是在我运行我的命令之后,我可以与我新添加的容器进行交互,因为它在同一个网络中,但没有在同一个堆栈中列出,问题是我不知道我的堆栈是否被 swarm 很好地管理

https://i.imgur.com/kI1pCkv.png

app_nginx.................. 应用程序

app_otherservice……应用

app_newservice........ ----

app_portainer…………应用程序

我发现堆栈中列出了新服务。有可能吗?

0 投票
2 回答
102 浏览

docker - 无法对“外部”DNS 服务器进行任何 DNS 查找?

在过去的几周里,我正在尝试修复我的 Docker 堆栈中的一个错误,但无济于事。

这是有问题的撰写文件(精简为相关内容):

它部署得很好,直到我必须做任何需要“外部”DNS请求的事情。
例如。在我的容器中,我手动运行curl https://www.google.com.
这会导致以下错误

curl:(6)无法解析主机:google.com

这是/etc/resolv.conf容器内我的内容:

运行docker inspect -f '{{.HostConfig.DNS}}' container-id结果如下:

[1.1.1.1 1.0.0.1]

我的问题是,我做错了什么,我该如何解决?它可以通过 dns 名称访问同一堆栈中的服务,而不是需要和外部 DNS(如1.1.1.1or 8.8.8.8)的域。我的防火墙没有阻止任何东西。

0 投票
1 回答
854 浏览

docker - 使用覆盖网络部署 Docker 堆栈 - 行为不一致

我正在使用 docker-compose.yml 文件(Swarm stack deploy)将 2 个容器(应用程序和 SQL)部署到同一个网络。大多数情况下,应用程序通过它的主机名作为连接字符串中的数据源与 SQL 通信没有问题。

但是,有时它根本找不到它。为了调试它,我已经验证了每个节点中确实创建了overlay网络,并且在检查每个节点上的网络时,我看到容器确实属于这个网络。

此外,当我运行docker exec命令进入应用程序容器时,我尝试向 SQL 容器发送 ping,主机名确实解析到正确的 IP,但仍然没有响应。

这非常令人沮丧,因为它只是不时发生。关于如何调试问题的任何建议?

0 投票
1 回答
115 浏览

linux - 从 Docker Stack 启动 docker-compose 文件时是否可以获取环境文件

当我使用 Docker Stack 启动时,我想创建一个符号链接并从我的 docker-compose 文件中获取环境文件。像这样:

你可以看到我的命令首先创建了一个符号链接,然后在 /config 目录中找到一个卷挂载的环境文件,然后启动 nginx。我知道还有其他方法可以将环境变量放入 docker-compose 文件中,但我正在尝试将环境方面与 docker-compose 文件本身分离。

我正在使用 Docker Stack 启动它,如下所示:

但是当我进入容器时:

我可以看到,当我的符号链接工作时,我的环境变量没有加载:

非常感谢任何可以帮助我从已安装的卷中获取此文件或了解我尝试做的事情可能永远无法工作的人。

0 投票
1 回答
143 浏览

docker - 强制 docker 服务访问托管在同一节点上的另一个服务

在 docker swarm 模式下,我有

工作节点 1 运行 Service1 和 Service2 工作节点 2 运行 Service1 和 Service2

工作节点 1 上的服务 1 需要调用服务 2 上的 API

当 Service1 调用 api 时,每次它在 node1 的 Service2 和 node2 之间进行负载平衡。

如何强制 docker 始终到达 node1 的服务 2,直到它关闭?

0 投票
1 回答
488 浏览

docker - Docker swarm DNS only returns services on local mode

I want to automatically scrape data from all instantiated services in my docker with Prometheus. I do this on a cluster with two workers and about 7 services. The services I want to scrape are deployed globally.

I've set Prometheus up to scrape using dns_sd_config and the target of tasks.cadvisor. This will result in a single host being returned, while it should be two services.

In this example I can only find a single CAdvisor node, while there are actually two.

However, when I do a lookup for a service that runs twice on the same worker node, the lookup manages to find both of the services

It seems like Docker DNS cannot do a lookup beyond it's own worker node. How can I set Docker up in a way that the DNS lookup returns all service instances across all workers?

Here's my current docker setup:

0 投票
0 回答
20 浏览

docker - 如何将 docker-swarm(容器化基础设施)分离到测试和生产环境中?

(不确定在这里问这些问题是否相关)

我想知道在容器化基础架构中设置和分离测试和生产环境的最佳实践how to? (更具体地说是在 docker-swarm 环境中。它应该在服务中分离吗?)what is

将这些环境与 VCS(例如 GitHub)中的每个分支(测试和生产)连接到该环境的可能性如何,是否可行?