mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 16:37:34 +00:00
均为书内自证的矛盾,无需外部来源: - 19.3: golang:1.26-alpine 标注为 ~1GB,但 21.7 将 ~900MB 归给非 alpine 的 golang:1.26,且 7.17 实测 alpine 版镜像为 295MB——alpine 变体不可能大于其 非 alpine 版本。改为与 21.7 一致的「golang:1.26 基础镜像的 ~900MB」。 - 20_cases_os: 正文称通用镜像 100-300 MB,紧邻的表格却列 Ubuntu ~80 MB (与 4.2 的 ubuntu 24.04 78MB 一致)。正文改为 80-300 MB。 - 4.2: 「查找大于 500MB 的镜像」的 ^[0-9]+GB 不匹配小数,会漏掉 docker 实际 输出的全部 x.yGB(本书自己的示例即为 2.5GB)。补充可选小数部分。 - 6.2: docker image ls 示例输出把 tag 混入 REPOSITORY 列 (127.0.0.1:5000/ubuntu:latest + TAG latest),与同块 ubuntu/latest 行及 本节自述的 tag 格式不符。 - 5.3: 生命周期状态图缺 Stopped --> Running,而 5.3.6 正是讲 docker start 启动已停止的容器;原图中停止的容器只能被删除。 - 9.5: 端口映射图节点标签 "容器 (Class B: 80)" 语义错乱(Class B 是 IP 地址 分类,与端口无关),改为「容器 (端口: 80)」。 - appendix/faq/errors.md: 标题「常见错误速查表」与 SUMMARY.md 及 faq/README 两处链接文字「常见错误处理」不一致(全书 196 篇中唯一一处标题漂移)。
第六章 访问仓库
仓库 (Repository) 是集中存放镜像的地方。
一个容易混淆的概念是注册服务器 (Registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址 docker.io/ubuntu 来说,docker.io 是注册服务器地址,ubuntu 是仓库名。
大部分时候,并不需要严格区分这两者的概念。
版本号说明
本章涉及的 Registry 和相关工具版本说明:
- Docker Registry / CNCF Distribution:本章示例使用
registry:2兼容路径;新生产部署应评估 Distribution 3.x,并核对配置路径、迁移说明和生态兼容性。已停止维护的registry:1不建议使用 - Nexus 3:建议指定具体版本(如
sonatype/nexus3:3.69)而非latest,避免自动升级带来的兼容性问题 - 镜像标签规范:
- 生产环境推送至仓库时应明确指定版本号(如
myapp:v1.0.0) - 避免依赖
latest标签,因为其含义存在歧义且易导致版本混淆
- 生产环境推送至仓库时应明确指定版本号(如
为什么需要私有仓库?
在讨论具体的安装和配置前,让我们先理解:什么时候你应该建设私有仓库?
开发团队(有专利代码、不能公开):
- 需要私有仓库存储内部镜像
- 涉及访问控制和审计
- 强烈推荐使用托管方案(如 Harbor 或云厂商提供的镜像仓库)
开源项目或个人学习:
- Docker Hub 公开仓库足够
- 无需自建私有仓库的成本
企业级部署:
- 需要高可用、备份、灾难恢复
- 推荐使用专业级方案(Nexus 3、Harbor)而非简单的 Registry
本章涵盖的方案从简到复杂:
- Docker Registry:最小化部署(适合简单场景)
- 私有仓库高级配置:添加认证、HTTPS 等生产必需项
- Nexus 3:企业级完整解决方案,支持权限管理、备份等