docker-compose 是一个自我修复的协调器吗?
is docker-compose a self healing orchestrator?
在 kubernetes 中,如果 pod 由于某种原因宕机,admission controller 将重新启动它。
我们称这种机制为自我修复。
我从未使用过 docker-compose,但我想知道:它是一样的吗?
当使用 docker-compose
或现在 docker compose
(使用 space)部署时,您将部署到单个节点。您可以将服务定义为使用处理崩溃应用程序的 restart policy 自动重启。但是,在某些情况下,网络或卷等外部性不处于良好状态,我已经看到导致定义被 docker 视为无效,此时它停止尝试重新启动服务。
还有Swarm Mode,它是像Kubernetes一样的编排器,它可以使用docker-compose.yml
定义目标状态,它会不断重启服务以从中断中恢复,并将它们迁移到另一个节点当集群中的一个节点出现故障时。
- docker-compose 本身并不是真正的容器编排器。
- 它只是一个允许您 运行 将服务及其依赖项作为一个单元的客户端。 docker-compose 确实有一个重启策略,可以在容器崩溃或发生其他事情时重启容器
- 如果运行ning容器所在的节点宕机,docker-compose将无法重启容器,您将面临服务中断
- Docker Swarm 和 Kubernetes 是服务器,而不仅仅是客户端,因此它们是更全面的编排器
要在 docker 的上下文中实现自我修复,可以像在 Kubernetes 中一样创建服务。但只有在 swarm 模式下使用 Docker 时才能创建服务。
要启用集群,请使用:docker swarm init
。
然后继续创建服务,如:
docker service create [service-name] [--options [values]...]
如果您想利用 docker-compose 来创建服务,请按照以下方法为 Postgres 数据库执行此操作:
version: "3.1"
services:
psql:
image: postgres
secrets:
- psql_user
- psql_password
environment:
POSTGRES_USER_FILE: /run/secrets/psql_user
POSTGRES_PSWD_FILE: /run/secrets/psql_pass
secrets:
psql_user:
file: ./psql_user.txt
psql_password:
file: ./psql_pass.txt
最后,继续并在存在 docker-compose.yaml 的同一目录中使用 docker-compose up
,它将启动您的 psql 服务并 运行。
详细说明一下,docker-compose 本身并不是一个编排器。 docker-compose 是一种使用单个文件和单个命令同时启动或停止多个容器的机制。
此外,必须声明 docker-compose 是一个测试实用程序,并不意味着在生产中使用。对于生产用途,请查看 stack.
在 kubernetes 中,如果 pod 由于某种原因宕机,admission controller 将重新启动它。
我们称这种机制为自我修复。
我从未使用过 docker-compose,但我想知道:它是一样的吗?
当使用 docker-compose
或现在 docker compose
(使用 space)部署时,您将部署到单个节点。您可以将服务定义为使用处理崩溃应用程序的 restart policy 自动重启。但是,在某些情况下,网络或卷等外部性不处于良好状态,我已经看到导致定义被 docker 视为无效,此时它停止尝试重新启动服务。
还有Swarm Mode,它是像Kubernetes一样的编排器,它可以使用docker-compose.yml
定义目标状态,它会不断重启服务以从中断中恢复,并将它们迁移到另一个节点当集群中的一个节点出现故障时。
- docker-compose 本身并不是真正的容器编排器。
- 它只是一个允许您 运行 将服务及其依赖项作为一个单元的客户端。 docker-compose 确实有一个重启策略,可以在容器崩溃或发生其他事情时重启容器
- 如果运行ning容器所在的节点宕机,docker-compose将无法重启容器,您将面临服务中断
- Docker Swarm 和 Kubernetes 是服务器,而不仅仅是客户端,因此它们是更全面的编排器
要在 docker 的上下文中实现自我修复,可以像在 Kubernetes 中一样创建服务。但只有在 swarm 模式下使用 Docker 时才能创建服务。
要启用集群,请使用:docker swarm init
。
然后继续创建服务,如:
docker service create [service-name] [--options [values]...]
如果您想利用 docker-compose 来创建服务,请按照以下方法为 Postgres 数据库执行此操作:
version: "3.1"
services:
psql:
image: postgres
secrets:
- psql_user
- psql_password
environment:
POSTGRES_USER_FILE: /run/secrets/psql_user
POSTGRES_PSWD_FILE: /run/secrets/psql_pass
secrets:
psql_user:
file: ./psql_user.txt
psql_password:
file: ./psql_pass.txt
最后,继续并在存在 docker-compose.yaml 的同一目录中使用 docker-compose up
,它将启动您的 psql 服务并 运行。
详细说明一下,docker-compose 本身并不是一个编排器。 docker-compose 是一种使用单个文件和单个命令同时启动或停止多个容器的机制。
此外,必须声明 docker-compose 是一个测试实用程序,并不意味着在生产中使用。对于生产用途,请查看 stack.