美文网首页
05 Docker 私有仓库

05 Docker 私有仓库

作者: 托瓦斯克一 | 来源:发表于2021-01-05 22:16 被阅读0次

概念关系

注册服务器(Registry)和仓库(Repository)概念的区别:注册服务器是存放仓库的实际服务器,而仓库则可以被理解为一个具体的项目或者目录;注册服务器可以包含多个仓库,而每个仓库又可以包含多个镜像。
举例:镜像地址为 docker.io/centos,docker.io 是注册服务器,centos 是仓库名。

注册服务器、仓库和镜像关系

公共镜像仓库

公共镜像仓库一般是 Docker 官方或者其他第三方组织(阿里云,腾讯云,网易云等)提供的,允许所有人注册和使用的镜像仓库。可以进入 Docker Hub 官网注册账号并创建仓库,然后通过 docker login 默认命令请求登录 Docker Hub。

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: mydocker
Password:
Login Succeeded

私有镜像仓库

Docker 官方提供了一个搭建私有仓库的镜像 registry ,只需把该镜像下载下来,运行容器并暴露 5000 端口,默认访问地址为 localhost

$ docker run -d -p 5000:5000 --name registry registry:2.7
Unable to find image 'registry:2.7' locally
2.7: Pulling from library/registry
cbdbe7a5bc2a: Pull complete
47112e65547d: Pull complete
46bcb632e506: Pull complete
c1cc712bcecd: Pull complete
3db6272dcbfa: Pull complete
Digest: sha256:8be26f81ffea54106bae012c6f349df70f4d5e7e2ec01b143c46e2c03b9e551d
Status: Downloaded newer image for registry:2.7
d7e449a8a93e71c9a7d99c67470bd7e7a723eee5ae97b3f7a2a8a1cf25982cc3

推送镜像

在本地镜像推送到自定义仓库前,我们需要先把镜像 "重命名" 一下,才能正确推送到自己创建的镜像仓库中,使用 docker tag 命令将镜像 "重命名",然后通过 docker push 命令推送镜像到本地仓库中:

$ docker tag busybox localhost:5000/busybox

$ docker push localhost:5000/busybox

持久化镜像存储

容器是无状态的,而私有仓库的启动方式可能会导致镜像丢失,因为我们并没有把仓库的数据信息持久化到主机磁盘上,当然还支持其他多种存储类型。
下面我们可以使用以下命令将镜像持久化到主机目录,保证容器被重建后数据不丢失:

### -v参数冒号前面为主机目录,冒号后面为容器内目录
$ docker run -v /var/lib/registry/data:/var/lib/registry -d -p 5000:5000 --name registry registry:2.7

构建可外访的镜像仓库

Docker 要求非 localhost 访问的镜像仓库必须使用 HTTPS 或者配置 insecure-registry,否则在另一台机器上是无法直接访问到本地镜像仓库的,在这说明下如何构建一个支持 HTTPS 访问的安全镜像仓库:
● 拥有一个合法的域名,并且可以正确解析到镜像服务器;
● 从证书颁发机构(CA)获取一个证书。

命令说明:域名为 regisry.mydocker.io,把主机上的证书文件挂载到了容器的 /certs 目录下,同时通过 -e 参数设置 HTTPS 相关的环境变量参数,最后让仓库在主机上监听 443 端口。

$ docker run -d \
  --name registry \
  -v "/var/lib/registry/data:/var/lib/registry \
  -v "/var/lib/registry/certs:/certs \
  -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/regisry.mydocker.io.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/regisry.mydocker.io.key \
  -p 443:443 \
  registry:2.7

### 远程主机推送镜像
$ docker tag busybox regisry.mydocker.io/busybox
$ docker push regisry.mydocker.io/busybox

私有仓库进阶

Docker 官方开源的镜像仓库仅满足了镜像存储和管理的功能,用户权限管理相对较弱,并且缺少管理界面;此处推荐一个基于 Distribution 项目开发的一款企业级镜像管理软件为 Harbor,拥有 RBAC(基于角色的访问控制)、管理用户界面以及审计等非常完善的功能。

相关文章

  • Docker

    构建镜像仓库 Docker运行java程序 1.1.6 搭建docker私有仓库 新建私有仓库 1.2.1 数据挂...

  • docker

    docker 私有仓库 下载镜像registrydocker pull registry 配置私有仓库(/etc/...

  • docker 连接私有仓库

    docker 连接私有仓库,并向私有仓库推送镜像 一、检查是否已经配置私有仓库 Insecure Registri...

  • 05 Docker 私有仓库

    概念关系 注册服务器(Registry)和仓库(Repository)概念的区别:注册服务器是存放仓库的实际服务器...

  • k8s学习笔记-5-私有harbor

    5 创建docker私有仓库 使用node5节点搭建harbor私有仓库 harbor仓库依赖docker和doc...

  • Docker

    一、Docker 私有仓库搭建 环境centos 6 192.168.1.2 Docker 仓库 192.168....

  • Docker搭建私有仓库之Harbor

    Docker搭建私有仓库之Harbor Harbor Harbor是构建企业级私有docker镜像的仓库的开源解决...

  • Docker之八私有仓库

    个人专题目录 Docker 私有仓库 1. 私有仓库搭建 2. 将镜像上传至私有仓库 3. 从私有仓库拉取镜像

  • 创建私有docker仓库

    使用私有仓库pull push更快速。 使⽤registry镜像创建私有仓库(仓库端) docker-regist...

  • 5.私有与公有镜像仓库

    一. 搭建私有镜像仓库 Docker Hub作为Docker默认官方公共镜像;如果想自己搭建私有镜像仓库,官方也提...

网友评论

      本文标题:05 Docker 私有仓库

      本文链接:https://www.haomeiwen.com/subject/jtawoktx.html