1)服务器按部署方式划分,如下:
・单机
・传统的实体机集群:不使用虚拟化或容器化,将应用和中间件直接部署在多台实体机上,通过负载均衡分发流量;优点是 性能最高,架构最简单,最稳定,缺点是 资源利用率低,发布效率低。适用于 不常更新的传统应用。
・虚拟机集群:多台虚拟机组成,通过负载均衡分发流量。占用内存,CPU资源的损耗大,体积大,启动慢,运维成本高;仅在隔离性要求高的场景使用。
・容器化的实体机集群:容器直接部署在多台实体机组成,通过负载均衡分发流量。避免了虚拟机集群的缺点,是面向互联网应用,实现快速迭代的主流部署方式。
・可编排性的容器化集群:当实体机数量较多,或需要实现弹性扩展时,Docker Compose不便操作,则需要K8S管理Docker
・Serverless:例如:AWS的Fargate,Lambda
2)Docker核心功能是
・Build(构建):通过Dockerfile定义环境,将环境打包成镜像(Image)
・Ship(分发):将Image推送到镜像仓库(Registry),如:Harbor
・Run(运行):基于Image创建容器(Container),也就是Image的运行实例。
**3)**适合打包的环境对象:无状态(不存数据),要频繁发布,要弹性扩展
| 应用/中间件 | 适用性 | Comment |
|---|---|---|
| jvm,node.js等运行平台 | 必须 | |
| 各类自研应用和脚本,及其使用中的依赖库 | 必须 | |
| Apache,Nginx | 建议 | |
| Kong等网关 | 建议 | |
| Tomcat,Jetty等轻型Web服务器 | 建议 | |
| Redis | 谨慎 | 单节点可Docker,集群时要结合StatefulSet,有一定风险。 |
| 各类MQ,Kafka | 谨慎 | 高吞吐,大数据量时禁止 |
| Elasticsearch | 谨慎 | 高吞吐,大数据量时禁止 |
| WebLogic等重型Web服务器 | 谨慎 | 体积大,启动慢 |
| 各类数据库 | 禁止 | 重数据 |
3)相关工具
・桌面版docker :https://www.docker.com/products/docker-desktop/
・服务器版:https://docs.docker.com/engine/install/#server
※远程连接客户端
| 工具名称 | 图形化 | 特点和优点 | 缺点或不足 | 适用场景 |
|---|---|---|---|---|
| OpenSSH | 仅命令行 | Linux,Windows10以上均内置OpenSSH,便于临即时性使用ssh。 | 操作性差 | 临时性使用 |
| xShell | 有界面 | 主要支持SSH,SFTP,X11协议;运行Linux和Docker命令 | 商业付费,仅支持Windows,不能文件传输 | 企业级首选 |
| WinSCP+PuTTY | 有界面 | WinSCP是SFTP文件传输工具;PuTTY是SSH终端 | 不适合多台主机,功能操作的便捷性弱 | 预算有限,又有Security限制 |
| FinalShell | 有界面 | 相当于WinSCP和PuTTY的组合,操作便捷性上有小优化 | 中国产,基于内置的jre,内存占用大 | 中国的运维人员 |
| MobaXterm | 有界面 | 远程全能工具箱,比xShell支持更多协议,例如:RDP,VNC等 | 内存占用大,界面复杂 | 全场景应用 |
| VS Code的Remote -- SSH | 有界面 | 把整个远程服务器编程本地开发环境 | 不如本地流程,绕过版本管理,不建议。 | 只能在远端服务器上调试,查问题等少量场景 |
※Docker生态中,常用相关工具
| 工具名称 | 运行环境 | 作用 | Comment |
|---|---|---|---|
| Docker Engine | 各Linux服务器 | 运行Docker | 核心组件有:用户交互CLI,守护进程等核心引擎dockerd,容器生命周期管理containerd等 |
| Docker Desktop | 本地Win/Mac | 本地开发调试 | 编辑Dockerfile实现打包;商用收费,平替品是Podman |
| Docker Hub | ー | 公共仓库 | 默认仓库 |
| Harbor | 管理型服务器 | 私有仓库 | Registry是Docker官方自带的极简私有仓库。 |
| Docker Compose | 各服务器 | 单机多容器编排 | V1版需单独安装,V2版已包含在Docker Engine中 |
| Kubernets | Master+多Worker | 多机多容器的分布式编排 | Rancher能够简化K8S的使用难度 |
| Portainer | 管理型服务器 | Docker CLI操作的Web图形化工具 | |
| Nginx | 管理型服务器 | 管理服务器与业务服务器间的网关 | 避免直接暴露 |
| Jenkins | 管理型服务器 | 自动化 | GitLab CI,GitHub Actions可直接内置容器构建 BuildKit镜像构建,Trivy或Grype镜像扫描 |
| Prometheus+Grafana | 管理型服务器 | 日志监控 | |
| xShell | 本地 | 查看,操作服务器和Docker |