Docker registry仓库搭建配置简介

                                                                                                     
 
 
Docker registry仓库搭建配置简介
1、关于docker registry
Docker registry仓库搭建配置简介
docker registry可以用来搭建私人docker镜像仓库来管理镜像,可以在一些某些无法访问官方的docker hub场景下使用。

registry在github上有两份代码,老的代码使用python编写,而新的使用go语言编写,老版本在0.9.1版本以后就不再更新,新的代码目前正式版本为2.4.1. 我们在使用时直接使用新的版本2.4.1.

2、docker registry 简单布署和使用实例
Docker registry仓库搭建配置简介
Docker registry仓库搭建配置简介
2.1  docker registry 简单布署
Docker registry仓库搭建配置简介
●    下载docker registry官方镜像
      docker pull registry:2.4.1

●   下载后启动使用该镜像启动容器
      docker run -d -v /opt/registry:/var/lib/registry -p         5000:5000 --restart=al       ways --name registry               registry:2.4.1

●   查看容器运行状况
    docker ps
    CONTAINER IDIMAGE   COMMAND  CREATED     STATUS  PORTSNAM       ES
    5b185372e042registry:2.4.1  "/bin/registry serve       "   4 seconds ago   Up       3 seconds0.0.0.0:5000-         >5000/tcp   registry

●   执行  curl 127.0.0.1:5000/v2
    <a href="/v2/">Moved Permanently</a>.
    说明registry布署成功。

Docker registry仓库搭建配置简介
2.2  镜像上传下载实例
Docker registry仓库搭建配置简介
●   查看当前镜像
     [root@tfg-105 jinzg]# docker images
     REPOSITORY  TAG  IMAGE ID  CREATED              VIRTUAL SIZE
     registry  2.4.1  5d322e774cf24 weeks ago  171.5      MB     tecs  tecs   383a      6a35e2e75 months ago         2.31 GB

●   将需要上传的镜像tag
`     docker tag tecs:tecs 127.0.0.1:5000/tecs`
 
●   执行push
    docker push 127.0.0.1:5000/tecs

●   完成后,执行
    [root@tfg-105 jinzg]# curl                                           127.0.0.1:5000/v2/_catalog
    {"repositories":["tecs"]}
     即上传成功。
 
●   下载即
      docker pull 127.0.0.1:5000/tecs

3、docker registry 高级配置
Docker registry仓库搭建配置简介
docker registry 启动的高级设置使用YAML文件作为配置文件。

YAML文件字段较多,各项在github上有详细介绍,此处介绍在我的仓库搭建中所使用的字段的介绍。

Docker registry仓库搭建配置简介
3.1  version
Docker registry仓库搭建配置简介
示例

    version: 0.1
这个字段是必须的,用来指定配置文件的版本,被置于最顶层,确保在解析具体数据之前进行版本一致性检查。

Docker registry仓库搭建配置简介
3.2  log
Docker registry仓库搭建配置简介
示例
 
    log:
      level: debug
      formatter: text
      fields:
    service: registry
    environment: staging
这个字段设置了日志系统的运行方式,可以调整日志的格式。

level:非必要选项,指定日志级别:error,warn,info和debug,默认是info;

formatter:非必要选项,指定日志输出格式,选项text,json和logstash,默认为text;

fields:非必要选项,映射域的名字,通常加在每行日志的开头,在混杂了其他系统日志的环境里更好辨认有用的日志信息。

Docker registry仓库搭建配置简介
3.3  storage
Docker registry仓库搭建配置简介
示例
 
     storage:
       filesystem:
         rootdirectory: /var/lib/registry
       swift:
         username: username
         password: password
         authurl: https://storage.myprovider.com/auth/v1.0 or https://storage.myprovider.com/v2.0 or https://storage.myprovider.com/v3/auth
         tenant: tenantname
         tenantid: tenantid
         domain: domain name for Openstack Identity v3 API
         domainid: domain id for Openstack Identity v3 API
         insecureskipverify: true
         region: fr
         container: containername
         rootdirectory: /swift/object/name/prefix
       inmemory:
       delete:
         enabled: false
       cache:
         blobdescriptor: inmemory
       maintenance:
         uploadpurging:
           enabled: true
           age: 168h
           interval: 24h
           dryrun: false
       redirect:
         disable: false
 
storage选项为必需选项,用来定义何种后端存储。必须配置一个后端存储,如果配置了多于一个就会报错,可以选择filesystem(本地盘)、azure(微软云存储)、gcs(谷歌云盘)、s3(亚马逊存储服务)、swift(openstack对象存储)、oss(阿里云对象存储)。

根据使用情况,主要列出filesystem和swift使用配置。


3.3.1  filesystem
参数:
rootdirectory 值为容器的本地绝对路径,registry库的所有数据文件都将存储在这个目录上。


3.3.2  swift
参数:
authurl 必需选项,获取身份验证令牌的URL地址
username 必需选项,openstack 用户名
password 必需选项,openstack 密码
region   非必需,容器所在的openstack 地区
container 必需,用来存放registry数据的swift容器名,在driver初始化时会创建以这个参数命名的容器。
tenant    非必需,openstack的租户名,可以使用租户名或者租户id。
tenantid  非必需,openstack的租户id。
domain    非必需,openstack V3 Identity API的域名
domainid  非必需,openstack V3 Identity API的域名ID。
trustid   非必需,openstack V3 Identity API的trustid
insecureskipverify 非必需,值为true时跳过TLS验证,false为默认。
authversion 非必需 说明openstack auth的版本号,默认情况下driver会从auth url自动探测到auth的版本号。
endpointtype 连接swift时的端点类型,可以为public、internal和admin 默认为public。


3.3.3  Maintenance
目前上传清除(Upload Purging)和只读模式是仅有的可用的维护功能。这些和未来的维护功能可以在这个字段下配置。

Upload Purging

Upload Purging是一个定期从registry上传目录中删除孤立文件的后台进程。Upload Purging默认被开启,要配置该功能,以下参数必现配置:


enabled 设置为true使能upload purging功能,默认true;
age     上传文件比该参数指定的时间更长的文件将被删除,默认168h,即1周;
interval 上传清楚的时间间隔,默认24h;
dryrun   设置为true,可以对被删除的文件建立一个概要,默认false。
age interval都是使用字符串的方式表示时间,例如45m,2h10m,168h等。

Read-only mode
这个字段设置为true,将使得client端无法向registry写入数据。

Docker registry仓库搭建配置简介
3.4  auth
Docker registry仓库搭建配置简介
示例
 
    auth:
      silly:
        realm: silly-realm
        service: silly-service
      token:
        realm: token-realm
        service: token-service
        issuer: registry-token-issuer
        rootcertbundle: /root/certs/bundle
      htpasswd:
        realm: basic-realm
        path: /path/to/htpasswd
 
仓库登录认证方式,此处有三种认证方式可选,需要结合第三方的认证服务器程序完成用户认证功能。

Docker registry仓库搭建配置简介
3.5  http
Docker registry仓库搭建配置简介
示例
 
    http:
      addr: localhost:5000
      net: tcp
      prefix: /my/nested/registry/
      host: https://myregistryaddress.org:5000
      secret: asecretforlocaldevelopment
      relativeurls: false
      tls:
        certificate: /path/to/x509/public
        key: /path/to/x509/private
        clientcas:
          - /path/to/ca.pem
          - /path/to/another/ca.pem
        letsencrypt:
          cachefile: /path/to/cache-file
          email: emailused@letsencrypt.com
      debug:
        addr: localhost:5001
      headers:
        X-Content-Type-Options: [nosniff]
 
http详细配置了registry的http服务的配置
addr 必需选项,可以被访问的地址,由地址:端口的方式组成;

net  非必需选项,指定用何种方式创建监听socket,有unix和tcp,默认tcp;

prefix 非必需,如果服务不运行在根目录,则使用这个参数指定路径;

host 非必需,该参数指定了外部可访问registry的url路径;

secret 必需,一个随机数据,用于保护数据不被篡改,默认情况下registry将随机生成;

relativeurls,非必需,指定registry返回相对url路径,由客户端解析真正的url;
tls 非必需,tls认证参数相关
debug 非必需,指定debug地址
headers 非必需

4、docker registry yml配置文件方式使用swift后端存储实例
Docker registry仓库搭建配置简介
Docker registry仓库搭建配置简介
4.1  swift对象存储安装
Docker registry仓库搭建配置简介
环境中使用devstack安装swift对象存储组件,devstack的local.conf中添加如下一行:

enable_service s-proxy s-object s-container s-account
进行openstack安装,顺利安装完成后
[root@tfg211 devstack(keystone_admin)]# openstack service list
+----------------------------------+-------------+-----------------+
| ID                               | Name        | Type            |
+----------------------------------+-------------+-----------------+
| 0d6dc5708dd54549a418007ad6f6513e | keystone    | identity        |
| 433f1186edf04f09a5c8febe87ee73c2 | swift       | object-store    |
| 43dbbd4f1fba4019b85566c293be5b14 | magnum      | container-infra |
| 5143e0e433b34d46a700e2686352f110 | heat-cfn    | cloudformation  |
| 607d7541a685420fa6bfa1368627c6b1 | neutron     | network         |
| 66e03d2ed277450db5477ccf59c8764f | cinder      | volume          |
| a661b1d707864b4f886e87c82352747d | nova_legacy | compute_legacy  |
| a7e6cebf57d24a07b5a545078bba095f | heat        | orchestration   |
| d8ffde8bd5414a73a06e727666602219 | glance      | image           |
| ef3bac32d9b8464cbdb6b03ad0f5d9f8 | nova        | compute         |
| faca2e329a1b4a608d15a94fcc6ebbd4 | cinderv2    | volumev2        |
+----------------------------------+-------------+-----------------+
即安装成功

Docker registry仓库搭建配置简介
4.2  config.yml文件内容
Docker registry仓库搭建配置简介
version: 0.1
    log:
      level: debug
    storage:
      swift:
        username: swift
        password: haoning
        authurl:  http://10.43.211.18:5000/v2.0/
        container: docker-registry
        tenant: service
        insecureskipverify: true
    http:
      addr: :5000
      secret: asecretforlocaldevelopment
      debug:
        addr: localhost:6001

配置文件中使用的用户名属于某个租户,必现将租户名填入。

启动命令行:
 
    docker run -d -p 4000:5000 --restart=always --name registry1   -v `pwd`/config.yml:/etc/docker/registry/config.yml registry:2.4.1
 
运行docker ps
[root@tfg211 devstack(keystone_admin)]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
1067bcf64df4        registry:2.4.1      "/bin/registry serve "   7 days ago          Up 20 hours         0.0.0.0:3000->5000/tcp   registry1

即运行成功。

运行成功后,在openstack的对象存储中可以看到用户下的名为docker-registry的container。push镜像后可以在界面看到相关文件,如图:
Docker registry仓库搭建配置简介
作者简介:金振国 ,软件工程师,目前从事虚拟化的开发维护工作,对开源有兴趣。




查看原文:http://www.zoues.com/2016/10/20/docker-registry%e4%bb%93%e5%ba%93%e6%90%ad%e5%bb%ba%e9%85%8d%e7%bd%ae%e7%ae%80%e4%bb%8b/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker私有仓库是一种用于存储、管理和分发Docker镜像的服务器。搭建一个私有仓库可以帮助开发者更好地管理自己的Docker镜像,也可以提高镜像的安全性。 以下是搭建Docker私有仓库的步骤: 1. 安装Docker 首先需要在服务器上安装Docker,可以根据操作系统类型选择合适的安装方法。 2. 下载Docker Registry镜像 在Docker Hub上下载Docker Registry镜像,可以使用以下命令: ``` docker pull registry:2 ``` 3. 运行Docker Registry容器 使用以下命令运行Docker Registry容器: ``` docker run -d -p 5000:5000 --restart=always --name registry registry:2 ``` 这里使用了-p参数将容器的5000端口映射到主机的5000端口,使得外部可以通过主机的IP地址和端口号访问私有仓库。使用--restart参数可以设置容器在重启后自动启动。使用--name参数可以指定容器的名称。 4. 配置Docker客户端 为了能够访问私有仓库,需要在Docker客户端中配置私有仓库的地址。可以通过以下方式修改Docker客户端的配置文件: ``` vi /etc/docker/daemon.json ``` 在文件中添加以下内容: ``` { "insecure-registries" : ["your-registry:5000"] } ``` 这里的your-registry是私有仓库所在的主机IP地址或域名。 5. 推送和拉取镜像 现在可以使用Docker客户端推送和拉取镜像到私有仓库了。推送镜像使用以下命令: ``` docker tag your-image your-registry:5000/your-image docker push your-registry:5000/your-image ``` 这里的your-image是要推送的镜像名称。拉取镜像使用以下命令: ``` docker pull your-registry:5000/your-image ``` 这里的your-image是要拉取的镜像名称。 至此,Docker私有仓库搭建完成。需要注意的是,私有仓库的安全性需要开发者自行维护,例如限制访问权限、定期备份等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值