当前位置: 首页 > 知识库问答 >
问题:

Docker独立容器与耦合容器

支华池
2023-03-14

我有几十个php应用程序,我想dockerize。我想知道什么是管理和性能方面的最佳设计。

>

  • 一个包含所有服务的大容器(php fpm、mysql、nginx等)

    所有服务的单独容器:

    • container-php-fpm-app1
    • 容器-nginx-app1
    • container-mysql-app1
    • container-php-fpm-app2
    • 容器-nginx-app2
    • container-mysql-app2

    一个服务容器,该服务承载所有应用程序:

    • 容器-php-fpm-用于所有php-fpm池
    • 容器-nginx-用于所有nginx虚拟主机
    • 容器-mysql-用于所有数据

    我知道运行单独的容器可以让您在不影响另一个服务的情况下对一个服务进行更改。您可以运行不同的php配置、扩展和版本,而不用担心其他服务会受到影响。我的所有应用程序都是基于Wordpress的,因此配置将(或应该)全面一致。

    目前我倾向于分离,但我不确定这是否是最好的方法。

    你们觉得怎么样?

  • 共有3个答案

    叶允晨
    2023-03-14

    根据docker documentation多服务容器:

    通常建议您通过每个容器使用一个服务来分隔关注区域。该服务可能会分叉到多个进程(例如,Apache Web服务器启动多个工作进程)。拥有多个进程是可以的,但要从Docker中获得最大好处,请避免一个容器负责整个应用程序的多个方面。您可以使用用户定义的网络和共享卷连接多个容器。

    也基于他们的最佳实践:

    每个容器应该只有一个问题

    将应用程序解耦到多个容器中,可以更轻松地横向扩展和重用容器。

    我建议使用选项2(所有服务的单独容器)。

    栾和玉
    2023-03-14

    我见过的最常见的模式是每个应用程序有一个单独的容器。这就是说,相关容器彼此靠近但仍然不同也有价值,因此库伯内特斯中使用了荚的概念。

    我建议每个应用程序一个容器。

    仉俊能
    2023-03-14

    您应该在一个容器中运行一个服务,这就是它的设计方式。所以1不在了。

    如果你看三个,你的应用程序之间有紧密的耦合。如果你想迁移到app1的新php-version,或者在那里有不同的依赖项,你就有麻烦了,所以这不是一个好的选择。

    标准是做到2.每个服务一个容器。

     类似资料:
    • 有用 Python 编写的流行服务器来容纳 WSGI 应用并提供 HTTP 服务。这些服务器在运行 时是独立的:你可以从你的 web 服务器设置到它的代理。如果你遇见问题,请注意 代理设置 一节的内容。 Gunicorn Gunicorn ‘Green Unicorn’ 是一个给 UNIX 用的 WSGI HTTP 服务器。这是一个从 Ruby 的 Unicorn 项目移植的 pre-fork w

    • 我有一个部署在JBoss WildFly 16.0上的JavaEE8应用程序。0.Final,它使用Hibernate OGM访问MongoDB。 我已经建立了一个定制的码头集装箱 并为Hibernate OGM添加了所需的模块/罐,并添加了我的耳朵。 我可以构建和运行Docker映像,它启动正常,尽管无法连接到MongoDB容器。我需要添加我的数据源等。 容器ID映像命令 已创建状态端口 名称f

    • 我正在docker容器中设置一个应用程序。我希望这个应用程序能够与localstack堆栈容器localstack文档连接。当我运行时,容器会成功启动。我可以运行docker-compose文件中未包含的独立java应用程序,它将成功连接到localstack容器。但与localstack一起启动的应用程序无法连接。我看过docker文档和localstack文档,我想不出如何让这些东西彼此通信。

    • 问题内容: 我对docker,redis和任何类型的网络都是陌生的(至少我了解python!)。首先,我想出了如何获取redis docker映像并在docker容器中运行它: 据我了解,此Redis实例具有可用于连接其他容器的端口6379。 如果运行以下命令,则可以与redis实例进行交互并生成key:value对: 我已经弄清楚如何制作并运行安装了redis库的docker容器,该容器将运行p

    • 「Allen 谈 Docker 系列」 DaoCloud 正在启动 Docker 技术系列文章,每周都会为大家推送一期真材实料的精选 Docker 文章。主讲人为 DaoCloud 核心开发团队成员 Allen(孙宏亮),他是 InfoQ 「Docker 源码分析」专栏作者,已出版《Docker 源码分析》一书。Allen 接触 Docker 近两年,爱钻研系统实现原理,及 Linux 操作系统。

    • 1、启动容器 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。 因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。 1.1 新建并启动 所需要的命令主要为 docker run。 例如,下面的命令输出一个 “Hello World”,之后终止容器。 $ sudo docker run ubuntu:14.0