前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >6-docker镜像仓库和标签tag

6-docker镜像仓库和标签tag

原创
作者头像
jackxiao
修改2021-11-16 16:29:23
1.6K0
修改2021-11-16 16:29:23
举报
文章被收录于专栏:DevOps运维DevOps运维

一 docker仓库和镜像tag

A. docker仓库分类

docker镜像是需要放到一个统一的仓库的,以便不同的主机可以下载和使用相同的镜像而不必每次都用dockerfile自己做,docker镜像仓库按如下方式划分

  1. 公共仓库
    • 官方公共仓库
      • docker hub
    • 第三方公共仓库
      • 阿里云
      • 七牛云
      • DaoCloud
      • 时速云
  2. 私有仓库
    • 官方命令行仓库:registry
    • 第三方web仓库:harbor

B. docker镜像tag命名规范

在基础知识部分,介绍了标准镜像名由四部分组成: 仓库地址/项目名/镜像名:标签,如daocloud.io/library/nginx:latest 一个高效的版本命名方案可以让用户清楚地知道当前使用的是哪个镜像,同时还可以保持足够的灵活性。 每个镜像可以有多个 tag,而多个 tag 可能对应的是同一个镜像。下面介绍 Docker 社区普遍使用的 tag 方案。

  1. 初始版本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
  2. 小版本更新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
  3. 大版本更新 之后,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
  4. 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命名规范

代码语言:javascript
复制
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

代码语言:javascript
复制
[root@docker01 ~]# docker login -u luoxiaogang
Password: 
......
Login Succeeded

C. 推送镜像

代码语言:javascript
复制
[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,所以需要信任该地址.

代码语言:javascript
复制
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. 无密码认证的私有仓库

  1. 运行docker仓库docker run -d -p 5000:5000 --restart=always -v /opt/myregistry:/var/lib/registry registry
  2. 修改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. 带密码认证的私有仓库

  1. base认证密码文件准备yum install httpd-tools -y mkdir /opt/registry-var/auth/ -p htpasswd -Bbn luogang 123456 >> /opt/registry-var/auth/htpasswd
  2. 启动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
  3. 登录docker仓库docker login 10.0.0.11:5001 -u luogang
  4. 修改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的部署

  1. 安装docker和docker-compose
  2. 下载harbor
  3. 修改harbor.cfg配置文件
  4. 执行安装脚本

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 docker仓库和镜像tag
    • A. docker仓库分类
      • B. docker镜像tag命名规范
      • 二 公共仓库docker hub
        • A. 修改镜像名
          • B. 登录docker hub
            • C. 推送镜像
            • 三 私有仓库(命令行)
              • A. 公共操作-添加信任仓库
                • B. 无密码认证的私有仓库
                  • C. 带密码认证的私有仓库
                  • 四 私有仓库(harbor)
                  相关产品与服务
                  容器镜像服务
                  容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档