• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2023-08-18 16:34 Aet 隐藏边栏 |   抢沙发  6 
文章评分 1 次,平均分 5.0

docker

  1. Docker是一个平台,用于开发、运输和运行应用程序,它允许你将应用程序及其依赖项打包到所谓的“容器”中

镜像

  1. Docker 镜像是一个轻量级、独立、可执行的软件包,其中包括运行应用程序所需的所有内容:代码、运行时、库、环境变量和配置文件

容器

  1. 容器通过镜像创建
  2. 容器是由Docker引擎管理的轻量级、可移植、自足的运行时环境
  3. 每个容器都包括了运行应用程序所需的所有库、二进制文件和其他文件
  4. 容器与主机系统上的其他容器和主机自身隔离,但可以配置为与它们通信

原理

  1. Docker的工作原理是使用Linux内核技术(如cgroupsnamespaces)来隔离容器的进程,使它们看起来像是在自己独立的系统中运行
  2. docker Engine还负责管理容器的网络、存储和其他资源

对docker里面部署多个业务的理解

镜像和容器

  1. 每个容器都由一个镜像创建
  2. 当我们在docker部署了两个wordpress镜像时,实际上会得到2个容器
    1. 这两个容器可以由不同的镜像创建,也可以由同一个镜像创建,这取决于具体需求

多个网站

  1. 当需要部署多个站点时,可以使用一个容器
    1. 在一个容器中配置两个虚拟主机或服务器块来托管两个网站
    2. 但是如果一个网站出现问题,可能会影响到另一个网站
  2. 也可以使用多个容器
    1. 每个容器负责一个网站
    2. 通过使用反向代理(例如Nginx)来管理流量并将请求路由到适当的容器
    3. 容器之间完全隔离,使得管理、更新和扩展更简单

反向代理

  1. 当有多个应用或服务运行在不同的容器中,并希望通过一个统一的入口点访问它们时,反向代理可以根据请求的URL、主机头等将请求路由到相应的容器
  2. 反向代理可以用于分发流量到多个容器实例之间,提供负载均衡和可扩展性
    1. 这在高流量场景中尤为重要
  3. 反向代理可以用于管理和终止SSL/TLS连接,将加密的外部流量转换为内部的非加密流量
    1. 这简化了证书管理并允许在一个集中的地方执行加密
  4. 过配置反向代理进行内容缓存,可以减轻后端服务的负担并提高响应速度
  5. 反向代理可以提供额外的安全层
    1. 例如限制某些IP地址的访问
    2. 过滤恶意请求
    3. 或者与其他安全工具(例如Web应用防火墙)结合使用
  6. 反向代理可以方便地处理跨域请求和URL重写规则,从而灵活地组织和提供服务
  7. 在更复杂的环境中,例如跨多个主机、集群或混合云环境部署应用,反向代理可以简化流量路由和管理

详细的反向代理

  1. docker里面运行了两个网站容器,AB,还运行了另一个Nginx反向代理容器C
  2. 当客户端通过服务器主机的IP或者域名来访问或请求资源时,这个请求会先被Nginx反向代理接收
  3. 然后反向代理再通过相关规则来选择将请求转发给容器A的web服务器或是容器Bweb`服务器里
    1. 例如基于域名或URL路径等
  4. 容器A或容器Bweb服务器处理请求,并生成响应
  5. 响应被发送回Nginx反向代理容器C
  6. Nginx反向代理容器C将响应发送回客户端

数据库

  1. Docker环境中,你可以选择为两个网站使用两个独立的MySQL数据库容器,或者只使用一个MySQL容器,在其中创建两个不同的数据库
  2. 多个数据库容器:
    1. 这种方法为每个网站提供了完全隔离的数据库环境
    2. 这样可以确保一个网站的问题不会影响另一个网站的数据库,也更容易管理每个数据库的资源使用和性能
  3. 一个容器多个数据库:
    1. 这种方法更加节省资源,因为只需要运行一个MySQL进程
    2. 在一个MySQL实例中创建多个数据库,然后配置每个网站分别连接到不同的数据库

硬件资源相关

  1. Docker容器中运行的进程默认情况下可以访问主机上的所有可用CPU和内存资源
  2. 然而,Docker提供了一系列的资源限制和配额机制,允许你控制容器对主机资源的使用
    1. 可以使用--cpus--cpu-shares选项来限制容器使用的CPU资源
    2. 使用--memory--memory-swap选项,你可以限制容器的内存使用
    3. 使用--device-read-bps--device-write-bps等选项,你可以限制容器的磁盘读写速度
    4. 还可以通过一些第三方工具和插件限制容器的网络带宽

网络资源相关

  1. 在多个容器里运行网站业务,并使用反向代理容器的场景中:
  2. 每个网站业务容器中的Web服务器(例如ApacheNginx)通常会侦听某个特定的端口,比如80443
    1. 在这种情况下,你不需要将这些端口映射到主机的端口,只需确保反向代理容器可以访问它们
    2. 另外,可以使用Docker的自定义网络来实现容器之间的通信,每个网站业务容器可以有一个内部端口
  3. 反向代理容器(例如Nginx)负责处理所有进入的客户端请求
    1. 这个容器需要侦听主机的HTTPHTTPS端口(通常是80443),并根据请求(如域名、URL路径等)将其路由到适当的网站业务容器
    2. 因此,需要将反向代理容器的端口映射到主机的这些端口上
  4. 配置反向代理

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2023-08-19
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享