docker private registry using rados beckend

简介: 前提:docker 下载镜像需要连接到 docker.io, 网络原因, 可能被其他国家限制, 也可能由于网速慢, 会导致异常 因此, 常常需要创建一个私有的 docker private registry 用于保存私有镜像或官方镜像, 提供更加方便快捷的下载方法, 省时省力. A. 主机说明主机 ip地址 作用sh-storage

前提:

docker 下载镜像需要连接到 docker.io, 网络原因, 可能被其他国家限制, 也可能由于网速慢, 会导致异常
因此, 常常需要创建一个私有的 docker private registry 用于保存私有镜像或官方镜像, 提供更加方便快捷的下载方法, 省时省力.

A. 主机说明

主机 ip地址 作用
sh-storage-128204.sh.vclound.com 10.198.128.204 docker registry
sh-storage-128200.sh.vclound.com 10.198.128.200 ceph
sh-storage-128201.sh.vclound.com 10.198.128.201 ceph
sh-storage-128202.sh.vclound.com 10.198.128.202 ceph
sh-storage-128203.sh.vclound.com 10.198.128.203 ceph

B. ceph 重要配置

(ceph 创建过程[略] 请参考之前的 ceph 文档)

1. 创建 dellpools

ceph osd create pool  dellpools 1600 1600

2. ceph 用户授权

第一次授权

ceph auth get-or-create client.docker mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=dockerpools'

假如用户已经存在修改授权方法

ceph auth caps client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=dockerpools, allow rwx pool=cephpools'

3. 导出 keyring

ceph auth export client.docker > /etc/ceph/ceph.client.docker.keyring

C. docker 配置

载入官方 registry 镜像

docker 后端

registry 官方镜像支持多种后端存储,
其中 v1 版本支持 swift, s3, ceph-s3 (radosgw) 等等, 不进行每个详细列举
当前使用的是 v2 版本, 其中对应 ceph 存储的 ceph-s3 接口应该已经不再支持, 如果希望使用 radosgw 方法需要指定 s3 驱动, 另外增加了 volumes (cephfs), rados 模块的支持,
该文档不进行 s3, volumes 测试

镜像

可以利用官方直接下载最新版本的镜像

docker pull registry

载入私有镜像

创建私有镜像的方法参考另外一个文档, 下面 rhel7_7.1.1503.tar, 是我自己创建的私有镜像
常见私有镜像载入前都是 tar 结构
载入私有镜像方法如下

[root@sh-storage-128204 export]# docker load --input rhel7_7.1.1503.tar

查询载入后的镜像

[root@sh-storage-128204 export]# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
test                         7.1.1503            fab4b1df8eb1        2 days ago          227.6 MB

重命名私有镜像

在上传镜像前, 需要对私有镜像进行 tag 标签

[root@sh-storage-128204 docker]# docker tag fab4b1df8eb1 10.198.128.204:5000/centos:7.1.1503
[root@sh-storage-128204 ~]# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
test                         7.1.1503            fab4b1df8eb1        2 days ago          227.6 MB
registry                     2                   b2c682ed7e4c        4 weeks ago         224.5 MB
10.198.128.204:5000/centos   7.1.1503            fab4b1df8eb1        2 days ago        227.6 MB

rados 配置文件

创建 rados.yml 配置

version: 0.1
log:
  level: debug
  formatter: text
  fields:
    service: registry
loglevel: debug
storage:
  rados:
    poolname: dockerpools
    username: docker
http:
    addr: :5000
    headers:
        X-Content-Type-Options: [nosniff]

创建 ssl key

在镜像上传时候, 需要调用 ssl key , 否则会遇到 https 连接错误

openssl genrsa -out ca.key 2048
openssl req -new -key ca.key -out docker.csr
openssl x509 -req -days 365 -in docker.csr -signkey ca.key -out docker.crt

D. docker 启动

docker -D run -d -p 5000:5000 -e CEPH_CONF=/etc/ceph/ceph.conf -v /var/lib/ceph:/var/lib/ceph  -v /etc/ceph:/etc/ceph -v /root/docker/rados.yml:/etc/docker/registry/config.yml -v /etc/docker/certs.d:/certs  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/docker.crt -e REGISTRY_HTTP_TLS_KEY=/certs/ca.key -d registry:2

常见大坑说明

1  registry 镜像无法读取 ceph.conf 配置, 因此需要带参数 -v /etc/ceph:/etc/ceph 
2. registry 镜像无法获得 ceph health 状态, 因此需要带参数 -v /var/lib/ceph:/var/lib/ceph
3. 常见 https 连接错误, 由 docker.crt, ca.key 解决
4. 常见 registry 无法连接到 pools, 要么没有授权, 要么无法读取 docker 用户 keyring
目录
相关文章
|
3月前
|
存储 数据可视化 数据安全/隐私保护
使用 Docker Compose 部署 Docker Registry
【1月更文挑战第2天】 在内网环境中,我们期望能够在本地共享镜像。为了解决这一问题,Docker Registry成为了我们的救星。Docker Registry是一个用于存储和管理Docker镜像的开源工具。通过在本地部署Docker Registry,您可以轻松地构建、存储和分享自己的Docker镜像。
151 3
使用 Docker Compose 部署 Docker Registry
|
4月前
|
关系型数据库 MySQL Linux
Linux 本地 Docker Registry本地镜像仓库远程连接
Linux 本地 Docker Registry本地镜像仓库远程连接
121 0
|
5月前
|
JSON Kubernetes Docker
k8s 集群中运行 docker registry 镜像仓库
k8s 集群中运行 docker registry 镜像仓库
623 0
|
Docker 容器
【registry】docker 私有仓库实现https 访问
【registry】docker 私有仓库实现https 访问
545 2
【registry】docker 私有仓库实现https 访问
|
1月前
|
关系型数据库 MySQL Linux
如何在Linux上搭建本地Docker Registry镜像仓库并实现公网访问
如何在Linux上搭建本地Docker Registry镜像仓库并实现公网访问
|
3月前
|
关系型数据库 MySQL Linux
Docker Registry本地镜像仓库部署并实现远程连接拉取镜像
Docker Registry本地镜像仓库部署并实现远程连接拉取镜像
159 1
|
8月前
|
安全 网络协议 关系型数据库
2021-09-08东软Linux学习-----CentOS Docker wordpress compose registry Cockpit
2021-09-08东软Linux学习-----CentOS Docker wordpress compose registry Cockpit
53 0
|
4月前
|
存储 数据可视化 数据安全/隐私保护
Docker Registry本地私有仓库搭建
Docker Registry本地私有仓库搭建
228 0
|
6月前
|
Cloud Native Go Docker
【云原生】Docker私有仓库registry
【云原生】Docker私有仓库registry
108 0
|
7月前
|
关系型数据库 MySQL Linux
高效管理体验?试试docker registry连接
Docker Registry 本地镜像仓库,简单几步结合cpolar内网穿透工具实现远程pull or push (拉取和推送)镜像,让你不受本地局域网限制困扰!
273 0
高效管理体验?试试docker registry连接