问题标签 [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.
docker - 如何在不重新启动所有服务的情况下更新 docker stack
我有一个集群,其中部署了不同的技术码头工人。(Zookeeper、Kafka、Elastic、Storm 和自定义 Web 应用程序)
Web 应用程序经历了巨大的变化,每次 web docker 更改时都必须更新堆栈。偶尔会有 Elasticsearch 镜像的更新。
当我运行 docker stack deploy 时,它会重新启动所有现有的甚至没有更改的 docker 服务。这阻碍了整个堆栈,并且整个应用程序都有停机时间。Docker 堆栈没有更新选项。
有人对此有解决方案吗?
java - 当 Spring Boot 连接时,MySQL 因“检测到缓冲区溢出”而崩溃
我遇到了这个令人毛骨悚然的问题,我完全被难住了,spring boot 会导致 mysql 崩溃。当我的 spring-boot 应用程序连接到 MySQL 时,mysqld 立即崩溃,MySQL 日志抱怨缓冲区溢出。
这是 Spring Boot 日志输出:
和mysql输出:
MySQL“检测到缓冲区溢出”行恰好发生在 17:54:46(我检查过),与 Spring 引导日志中引发异常的时间完全相同,因此一个导致另一个。
这是弹簧配置文件:
编辑:更多信息..我在 Docker 容器中运行这些服务。当我尝试将它们作为 Docker Stack 运行时会发生此错误。但奇怪的是——当我“手动”运行它们时(即通过简单的“docker run”命令),它工作正常。
docker - 我可以在没有 compose 的情况下使用 ansible 启动 docker swarm 服务吗?
如何通过 ssh 进入由 docker swarm 创建的服务?我使用 docker stack 创建了一个服务,yaml 文件如下所示:
我验证了该服务正在运行,但我不确定如何通过 ssh 进入创建的服务(容器)。
docker - 简单的 docker 容器:构建专用映像或将配置挂载为卷?
我正在整理一个docker-compose.yml
文件来为我正在处理的项目运行多个服务。该项目有一个位于同一域下的 Magento 和 Wordpress 网站,“相同域”方面需要一个非常简单的 nginx 容器来将请求路由到任一服务。
所以我把这个架构成 4 个容器(可视化):
- 一个“magento”容器,使用内部项目特定的图像。
- 一个“wordpress”容器,使用内部项目特定的图像。
- 一个“db”容器正在运行
mysql:5.6
,init db 转储安装在/docker-entrypoint-initdb.d
. - 一个“路由器”容器运行
nginx:alpine
,自定义配置安装在/etc/nginx/nginx.conf
. 这用作设置了两个位置指令的反向代理。location /
到“magento”的location /blog
路线,以及到“wordpress”的路线。
我想保持简单并避免构建不必要的自定义图像,但是在“路由器”的上下文中,我不确定我在做什么是最好的方法,或者作为特定于项目的图像是否会更好.
我倾向于将自定义配置安装到nginx:alpine
容器中的当前方法,因为配置特定于正在运行的堆栈 - 作为单个独立容器没有意义。
所以这两种方法,没有自定义图像,我们有以下内容docker-compose.yml
否则,我们有一个Dockerfile
包含以下内容,正如我在互联网和其他 StackOverflow 响应中所建议的那样。
有人支持/反对这两种方法吗?
docker - Docker Swarms 和 Stacks:有什么区别?
我刚刚阅读了 Docker 出色的入门指南,只是想确认我了解基本的 Docker 用语,然后再继续深入。这些定义在文档中有所提供,但其中许多文档都是基于示例的,没有给出以下概念的具体形式。
因此,我的理解是:
- 服务:Docker 服务是应用程序的不同组件:前端可能是 React UI,后端可能是 Spring Boot Web 服务,您可能有 MySQL DB 以及 RabbitMQ 代理;这些都是不同的服务,都包含您的应用程序。
- 集群:Docker 集群是指您有一个 Swarm 为跨 2 个以上 Docker 主机的应用程序管理 1 个以上服务;集群只是指运行服务容器的所有 Docker 主机。
- Compose:Docker Compose 是一个用于管理服务、Swarms 和 Stacks 的工具。
- Stack :当 Swarm Manager 为给定应用程序在给定集群上为多个 Service管理多个 Swarm 时,就会出现 Docker Stack;因此,Swarm 和 Stack 之间的区别在于,Swarm 仅适用于单个 Service,而 Stack 管理多个 Swarm,因此多个 Service 都包含一个可扩展的分布式应用程序。
所以我问:我对这些基本术语的理解是正确的还是我在某种程度上被误导了?
docker - 具有外部化到 .env 文件的图像版本的 Docker Swarm
我曾经将我的图像版本外部化到我的 .env 文件中。这使它易于维护,并且我不会docker-compose.yml
仅仅为了升级版本而修改我的文件,所以我确信我不会错误地删除一行。
但是,当我尝试将我的服务部署stack
到 时swarm
,docker 引擎抱怨我的图像不是正确的存储库/标签,并带有以下确切消息:
来自守护程序的错误响应:rpc 错误:代码 = 3 desc = ContainerSpec:“GROUP/IMAGE:”不是有效的存储库/标签
为了解决这个问题,我可以直接在docker-compose.yml
文件中修复图像版本。这里有什么逻辑或者它是一个错误吗?但这混合修复了 docker-compose 和变量的一部分。
干杯,奥利维尔
docker - 构建基础镜像的 Docker-compose.yml 文件,然后基于它的子镜像?
为澄清起见,当我说基础镜像时,我指的是具有所有通用配置的父镜像,因此基于它的子镜像不需要单独下载依赖项。
据我了解, docker-compose.yml 文件是运行时配置,而 Dockerfiles 是构建时配置。但是,有一个build
使用 docker-compose 的选项,我想知道如何使用它来构建基础映像。
截至目前,我使用一个运行其他 shellscript 的 shellscript。一个从它也创建的基本图像构建我所有的图像。另一个将它们作为具有必要配置的容器运行。但是,基本映像永远不会作为容器运行。
目前,我希望将 shellscript 转换为 docker-compose 文件,如下所示:
制作图像的 shellscript 如下:
我的问题归结为一件事,我可以在不使用 docker-compose 在容器中运行它的情况下创建这个基础镜像吗?FROM base:latest
(所有 Dockerfile 都以基础本身以外的开头)。我希望对其他人尽可能简单,以便他们只需要运行一个命令。
编辑:我使用的是版本 3,并且根据文档,build:
被忽略,并且 docker-compose 只接受预构建的图像。
docker - 在 shellscript 上使用 docker-compose 文件版本 3 的优势?
我创建 docker-compose.yml 的最初原因是利用一些特性,例如build:
创建depends-on:
一个文件来构建我的所有图像并在容器中运行它们。但是,我注意到版本 3 贬低了这些功能中的大部分,我很好奇为什么我会使用它而不是构建 shellscript。
这是目前我运行所有容器的 shellscript(我假设这是版本 3 docker-compose 文件将替换的内容,如果我要使用它):
docker-swarm 是否依赖于使用堆栈?如果是这样,那么我可以看到 docker-compose 和 stacks 的用途,但我似乎无法在网上找到答案。我会使用第 3 版,因为它与 swarm 兼容,与第 2 版不同,如果我读过的话。也许我完全错过了 docker-compose 的意义,但我对它带来的东西有点困惑。
docker - Docker Swarm - 让服务永远运行
我正在创建一个执行命令以启动程序的 docker 服务,但问题是该服务不断终止,因为一旦启动命令完成,docker 认为它已完成并终止并再次启动它。我想更改此行为,以便 docker 服务运行,完成其命令,然后在其命令完成后永远保持运行。
我该怎么做呢?我知道您可以使用-td
标志来使用普通的旧“docker run”来执行此操作,但是如何使用 compose 文件使用 docker stack 来执行此操作?
编辑:我正在尝试将“无限睡眠”命令附加到命令的末尾,如下所示:
运行docker stack deploy
结果: