1
dzdh 2022-07-28 09:51:28 +08:00 1
生产环境 自建 registry ( https://hub.docker.com/_/registry)
registry 更新通知到 mq ,所有机器或者集群平滑更新新镜像。还能随时回滚。 为啥要同步一个大几百兆的文件。。 |
2
levon OP |
3
freevioce 2022-07-28 10:03:54 +08:00 1
当作一个文件直接传送到服务器,特别简单的场景当然可以。
- 1. 节省空间,涉及到多版本镜像,存储使用仓库会多层 layer 复用,达到节省空间; - 2. 大量传输高效,需要集群大量更新镜像,仓库更高效 - 3. 集中管理方便 - 4.有仓库集成 webhook,做更复杂的操作(比如 habor ) |
4
chenluo0429 2022-07-28 10:16:04 +08:00 1
docker save
docker load 但是你需要自行管理导出的镜像文件,还不能像 pull 一样忽略已经拉取过的层 有个 registry 给你处理好这些事不好吗? |
5
VeryZero 2022-07-28 10:17:57 +08:00 1
因为用仓库快啊,全自动操作。
否则你打算手动传文件到上百台服务器上? 要是写脚本传,那用仓库有啥区别? |
6
snowlyg 2022-07-28 10:20:40 +08:00 1
那是因为你的服务集群还不够,机器,机房也不多。就像不出远门的人平常走走路就行了,就会怀疑为什么有些人还要买汽车,坐飞机。
|
7
fiht 2022-07-28 10:25:40 +08:00 2
这个细说起来太长了。如果楼主想关注实际环境的话,可以试下搜索这两个关键字 “ 云 CI/CD ” 或者 “ k8s devops ”。
回到这个问题。 1. 生产环境的用法,如 1 楼所说,都是用的自建的 registry 。如果在大厂或者使用公有云的话,会有开箱即用的 registry 可以用。比如腾讯云的 registry: https://cloud.tencent.com/product/tcr 。注意这里的 push 到镜像仓库,一般不是本地做的,是在 CI 流程中里做的。也就是代码推送到远程仓库里。自动触发一个镜像构建,构建完成之后推送到仓库里。 2. 镜像可以当作一个文件直接传送到服务器去,为什么要中转?事实上也是可以的。但是不是云时代的做法。比如一些老的 CD (部署)组件,就是 build 成一个部署包,然后通过 SCP 的方法传到目标服务器上去。但是云时代大家往往不这么做。**目前我们的生产环境应该主要都是基于 K8s 生态**,在 k8s 的理念里,最小的计算单元是 Pod ,已经没有服务器的概念了。 1 楼说的 registry 更新通知 mq ,我的通用做法是 CI/CD 流程中去调用 k8s 做 Pod 的升级。 关于几百兆的镜像的话,其实在云时代,内网都是 Gbps 的互联速度,对文件的传输没有那么敏感。但还是有优化。 比如容器本身的分层方法,每次或许只要拉增量就可以了。 以及我了解到的还有基于 p2p 拉取的方式 ,比如腾讯云的这个 https://www.tencentcloud.com/zh/document/product/457/38708 。 |
8
dzdh 2022-07-28 10:31:07 +08:00 1
|
9
stille 2022-07-28 14:39:49 +08:00 1
其实吧,就楼主的问题描述,感觉就没怎么用过 docker,或者说不太了解容器化.
|
10
levon OP 我大概明白了,多谢大家的回复。
|
13
dzdh 2022-07-28 16:06:11 +08:00 1
@levon 就是环境统一,降低运维成本,CI/CD 也好做了。PHP 类的项目还好,有个 git 钩子就自动上线了。java/go 之类的,你不要编译嘛,你编译环境呢,容器化就全给你搞定了。生产和开发环境共享一个基础镜像,多人开发环境和各种依赖包也统一的。多爽。
|
15
datoujiejie221 2022-07-28 16:49:02 +08:00 1
自建用 harbor 的多吧
|
16
stille 2022-07-28 17:15:25 +08:00
@levon 其实上面大家都回复了,主要是降低运维成本,环境依赖统一,多服务器部署快速.等等
例如你的小项目做好镜像打包,就不需要在意服务器的环境配置,以后扩容增加服务器或者迁移服务,直接一个包打过去一条命令就恢复使用. |
17
stille 2022-07-28 17:16:52 +08:00 1
如果涉及到机密不想推送至仓库,可以配置私有镜像仓库,也可以本地写好 Dockfile,各个服务器启动自己编译相同环境的镜像.
|
19
superchijinpeng 2022-07-28 19:18:14 +08:00 1
可以,服务于全国各个 gov 内部,没有仓库
|
20
levon OP @superchijinpeng 你意思公司是服务 gov ,然后内网部署,不使用镜像仓库,是吗
|