6-docker镜像仓库和标签tag
2023-03-14 22:54:07 时间
一 docker仓库和镜像tag
A. docker仓库分类
docker镜像是需要放到一个统一的仓库的,以便不同的主机可以下载和使用相同的镜像而不必每次都用dockerfile自己做,docker镜像仓库按如下方式划分
- 公共仓库
- 官方公共仓库
- docker hub
- 第三方公共仓库
- 阿里云
- 七牛云
- DaoCloud
- 时速云
- 官方公共仓库
- 私有仓库
- 官方命令行仓库:registry
- 第三方web仓库:harbor
B. docker镜像tag命名规范
在基础知识部分,介绍了标准镜像名由四部分组成: 仓库地址/项目名/镜像名:标签,如daocloud.io/library/nginx:latest
一个高效的版本命名方案可以让用户清楚地知道当前使用的是哪个镜像,同时还可以保持足够的灵活性。
每个镜像可以有多个 tag,而多个 tag 可能对应的是同一个镜像。下面介绍 Docker 社区普遍使用的 tag 方案。
- 初始版本
v1.9.1
镜像名为myimage,当前需要的版本为 v1.9.1。那么可以给镜像打上四个 tag:1、1.9、1.9.1和 latest。docker tag myimage-v1.9.1 myimage:1 docker tag myimage-v1.9.1 myimage:1.9 docker tag myimage-v1.9.1 myimage:1.9.1 docker tag myimage-v1.9.1 myimage:latest - 小版本更新
v1.9.2
过了一段时间,发布了 v1.9.2。这时可以打上 1.9.2 的 tag,并将1、1.9和 latest 从 v1.9.1 移到 v1.9.2。docker tag myimage-v1.9.2 myimage:1 docker tag myimage-v1.9.2 myimage:1.9 docker tag myimage-v1.9.2 myimage:1.9.2 docker tag myimage-v1.9.2 myimage:latest - 大版本更新 之后,v2.0.1 发布了。这时可以打上2、2.0、2.0.1的tag,并将 latest 移到 v2.0.1。docker tag myimage-v2.0.1 myimage:2 docker tag myimage-v2.0.1 myimage:2.0 docker tag myimage-v2.0.1 myimage:2.0.1 docker tag myimage-v2.0.1 myimage:latest
- tag方法有点总结 myimage:1 始终指向 1 这个分支中最新的镜像。 myimage:1.9 始终指向 1.9.x 中最新的镜像。 myimage:latest 始终指向所有版本中最新的镜像。 如果想使用特定版本,可以选择 myimage:1.9.1、myimage:1.9.2 或 myimage:2.0.1。 Docker Hub 上很多 repository 都采用这种方案,要熟练使用。
二 公共仓库docker hub
docker hub是docker官方提供的的公共镜像仓库,类似于代码仓库github,需要注册. 官方地址:https://hub.docker.com/ 本人账号:luoxiaogang 账号密码:隐藏 私有仓库:c7-nginx
A. 修改镜像名
修改镜像名,使其符合docker hub命名规范
docker image tag c7-nginx:v2 luoxiaogang/c7-nginx:v2
[root@docker01 ~]# docker image ls luoxiaogang/c7-nginx
REPOSITORY TAG IMAGE ID CREATED SIZE
luoxiaogang/c7-nginx v2 669691018aa6 5 days ago 789MB
B. 登录docker hub
[root@docker01 ~]# docker login -u luoxiaogang
Password:
......
Login Succeeded
C. 推送镜像
[root@docker01 ~]# docker push luoxiaogang/c7-nginx
The push refers to repository [docker.io/luoxiaogang/c7-nginx]
fd2fdb015cf0: Pushed
7912ce70bbc0: Pushed
2de8d3b18deb: Pushed
f903e5a29540: Pushed
228f6119c990: Pushed
54470def7538: Pushed
d69483a6face: Pushed
v2: digest: sha256:12843dfd....6 size: 1782
三 私有仓库(命令行)
A. 公共操作-添加信任仓库
需要添加信任的原因是docker默认需要使用https的安全连接来下载镜像,而我们自己搭建的环境只有http,所以需要信任该地址.
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["10.0.0.11:5000","10.0.0.11:5001"]
}
systemctl restart docker
B. 无密码认证的私有仓库
- 运行docker仓库docker run -d -p 5000:5000 --restart=always -v /opt/myregistry:/var/lib/registry registry
- 修改tag并推送docker image tag c7-nginx:v2 10.0.0.11:5000/c7-nginx:v2 docker push 10.0.0.11:5000/c7-nginx
C. 带密码认证的私有仓库
- base认证密码文件准备yum install httpd-tools -y mkdir /opt/registry-var/auth/ -p htpasswd -Bbn luogang 123456 >> /opt/registry-var/auth/htpasswd
- 启动docker私有仓库docker run -d -p 5001:5000 -v /opt/registry-var/auth/:/auth/ -v /opt/myregistry:/var/lib/registry -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry
- 登录docker仓库docker login 10.0.0.11:5001 -u luogang
- 修改tag并推送docker image tag c7-nginx:v2 10.0.0.11:5001/c7-nginx:v2 docker push 10.0.0.11:5001/c7-nginx
四 私有仓库(harbor)
企业级私有仓库harbor需要用到docker的单机编排工具docker-compose,所以这里仅列出步骤,等学过后便的docker-compose工具后,在单独写harbor的部署
- 安装docker和docker-compose
- 下载harbor
- 修改harbor.cfg配置文件
- 执行安装脚本
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的