云原生部署(四):容器镜像仓库——Docker Hub 与 Harbor 私服
镜像构建出来了,放哪?直接推到 Docker Hub 上?如果你在公司做 DevOps,答案大概率是否定的。公司的代码、尤其是包含业务逻辑的镜像,不可能直接放到公共网络上。你需要一个私有镜像仓库。而这,就是 Harbor 的用武之地。
一个开发出身的DevOps工程师 · 代码有理性,文章有温度
镜像构建出来了,放哪?直接推到 Docker Hub 上?如果你在公司做 DevOps,答案大概率是否定的。公司的代码、尤其是包含业务逻辑的镜像,不可能直接放到公共网络上。你需要一个私有镜像仓库。而这,就是 Harbor 的用武之地。
会写 Dockerfile 和写好 Dockerfile 是两回事。一个糟糕的 Dockerfile 可能让你的镜像从 100MB 变成 1GB,一个优秀的 Dockerfile 则能让你的构建快、镜像小、安全性还好。这篇我们深入 Dockerfile 的每条指令,并通过实际案例掌握多阶段构建。
Docker 是云原生部署的第一步。很多人会用 docker run,但未必清楚背后发生了什么。镜像和容器到底有什么区别?为什么 Docker 镜像那么省空间?“分层”是什么概念?这篇文章带你从原理层面理解 Docker 的核心机制。
你有没有想过,为什么十年前部署一个应用要折腾好几天,而现在几分钟就能上线?我们今天熟悉的容器、Kubernetes、云原生,其实不是凭空出现的,它们是一步步演化而来的。要理解云原生部署,得先知道它从哪里来、解决了什么问题。
1、你是不是也见过这个场景? 玩某些 Unreal 游戏的时候,你一定经历过: 更新完游戏,兴奋地双击图标。然后屏幕上弹出一个窗口——「Compiling Shaders: 1 / 23847」。进度条缓慢蠕动,预计剩余时间:20 分钟。 你的表情:😐 为什么每次更新都要编译 Shader?为什么编译 Shader 这么慢?有没有办法不让玩家等...
1、Cook 完了,然后呢? 上一篇文章我们讲完了 Cook——Unreal 把编辑器里的「生资源」烹饪成了目标平台可用的「成品」。 Cook 完成后,你的项目目录下会多出大量的 Cooked 文件。贴图变成了 .utexture2D,模型变成了 .uasset 和 .uexp,Shader 变成了 .ushaderbytecode。这些都是平台原...
1、”Cook”这个名字怎么来的? 在 Unreal 的构建流程中,「Cook」是一个绕不过去的概念。 我一开始很疑惑——为什么要叫「Cook」?难道 Unreal 把资源处理比喻成做菜? 后来发现确实就是这样。Unreal 的工程师觉得,编辑器里的资源是「生食材」,需要经过「烹饪」才能变成各个目标平台可用的「成品」。 这个比喻其实很贴切。 ...
1、两个陌生的缩写 前五篇文章我们聊了 Unity 的构建体系。从 Build 按钮背后的八个阶段,到 AssetBundle 三代接口演进(第 0 代手写 → 第 1 代标记 → 第 2 代 SBP),再到 Addressables 和 IL2CPP 的跨平台方案。 今天开始,我们转战 Unreal。 如果你刚接触 Unreal 的构建,你会很...
1、为什么 C# 需要”转译”? C# 是一个托管语言。你写的 C# 代码编译后得到的不是机器码,而是 IL(Intermediate Language,中间语言)。运行时由 .NET Runtime 或者 Mono Runtime 来解释执行或者 JIT(Just-In-Time)编译执行。 在 PC 上,这毫无问题。Windows 自带了 .N...
1、从 SBP 到 Addressables:两种不同的升级路径 前两篇文章,我们聊了 AssetBundle 的底层接口演进:第 0 代(手工收集+不处理依赖)→ 第 1 代(标记包名 或 AssetBundleBuild[] 代码定义分包,自动依赖)→ SBP(精确增量构建,源码开放)。 SBP 是一条改动最小的升级路径——你只要换了底层打包接...