docker private registry using rados beckend
前提:
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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
openstack python sdk list tenants get token get servers
1,openstack python sdk 获取token 获取租户tenants projects #!/bin/bash export OS_PROJECT_DOMAIN_ID=default export OS_USER_DOMAIN_ID=default export OS_PROJECT_NAME=admin export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=yidesk321 export OS_AUTH_URL=http://controller-test:35357/v2.0 export OS_IMAGE_API_VERSION=2 #!/usr/bin/python from os import environ as env import keystoneclient.v2_0.client as ksclient keystone = ksclient.Client(auth_url=env['OS_AUTH_URL'], username=env['OS_USERNA...
- 下一篇
ECSHOP代码详解之INIT.PHP
<?php /** * ECSHOP 前台公用文件 */ //防止非法调用 defined-判断常量是否已定义,如果没返回false if (!defined('IN_ECS')) { die('Hacking attempt');//die-直接终止程序并输出 } //报告所有错误 error_reporting(E_ALL); //如果获取不到本文件 if (__FILE__ == '') { die('Fatal error code: 0'); } /*预定义常量 __LINE__ 文件中的当前行号。 __FILE__ 文件的完整路径和文件名。 __FUNCTION__ 函数名称(这是 PHP 4.3.0 新加的)。 __CLASS__ 类的名称(这是 PHP 4.3.0 新加的)。 __METHOD__ 类的方法名(这是 PHP 5.0.0 新加的)。 */ /* 取得当前商城所在的根目录 */ define('ROOT_PATH', str_replace('includes/init.php', '', str_replace('\\', '/', __FILE__...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- MySQL8.0.19开启GTID主从同步CentOS8