Docker搭建registry 私人仓库

2017-06-28  本文已影响0人  PengFuChuan
一、Docker搭建registry 私人仓库简易版
docker run --restart=always --name=registry2.3 -v /home/registry/data:/var/lib/registry -d -p 5000:5000  registry:2.3

说明: -v /home/registry/data:/var/lib/registry 是把镜像存储目录挂载到宿主机,才不会删容器导致数据丢失

这样就可以运行使用registry:2.3,但是这是对所有人开放,并不安全,更好的方案是结合第三方存储服务,如阿里云OSS,并且需要给registry加上登录验证,以及一些权限的限制。

二、Docker搭建registry 私人仓库进化版

使用docker-compose 来进行部署,废话不多说直接来操作。
首先切换到/home 目录(我一般是使用centos 7 , home目录为基础使用目录,具体看个人)

mkdir registry && cd registry

在当前目录创建docker-compose.yml:

registry:
  restart: always
  image: "registry:2.3"
  ports:
    - 5000:5000
  environment:
    - REGISTRY_AUTH=htpasswd
    - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
    - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
  volumes:
    - ./auth:/auth
    - ./data:/var/lib/registry

在启动 Registry 服务时,需要用到以下两个目录
(1)auth 目录用于存放 docker login 时的账号和密码
(2)data 目录用于存放 docker push 时上传上来的文件
执行以下命令新建这两个目录:

 mkdir auth && mkdir data

然后,创建一个测试账号(用户名: admin ,密码: 123456 )并保存到 auth/htpasswd 中:

htpasswd -Bbn test 123456 > auth/htpasswd

最后就可以来启动 Registry 服务:

docker-compose up -d

docker ps 可以看到已经run起来的容器:

[root@myali1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
26895a32e59a        registry:2.3        "/bin/registry /etc/d"   8 hours ago         Up 8 hours          0.0.0.0:5000->5000/tcp   registry_registry_1

简单示例 push 镜像到私人仓库
执行以下命令创建一个新镜像:

docker tag docker.io/busybox  127.0.0.1:5000/test/busybox

说明:镜像名为 127.0.0.1:5000/test/busybox ,其中 127.0.0.1:5000 表示服务器地址, test/busybox 表示镜像名。
上传之前要先登录:

docker login 127.0.0.1:5000

根据提示输入账号密码或者一步到位:

docker login -u admin -p 123456 127.0.0.1:5000

登陆成功后,执行以下命令即可上传

docker push 127.0.0.1:5000/test/busybox

最后通过浏览器访问 : http://ip:5000/v2/_catalog 会提示输入账号密码,输入账号密码之后你就可以看到刚刚push上来的镜像。

{
     "repositories": [
        "test/busybox"
      ]
}
registry:
  restart: always
  image: "registry:2.3"
  ports:
    - 5000:5000
  environment:
    - REGISTRY_AUTH=htpasswd
    - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
    - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
    - REGISTRY_STORAGE=oss
    - REGISTRY_STORAGE_OSS_ACCESSKEYID=你的ACCESSKEYID
    - REGISTRY_STORAGE_OSS_ACCESSKEYSECRET=你的ACCESSKEYSECRET
    - REGISTRY_STORAGE_OSS_REGION=你的OSS所属地域
    - REGISTRY_STORAGE_OSS_BUCKET=你的BUCKET名称
    - REGISTRY_STORAGE_OSS_INTERNAL=false #是否走内网
    - REGISTRY_STORAGE_OSS_SECURE=false
    - REGISTRY_STORAGE_DELETE_ENABLED=true
  volumes:
    - ./auth:/auth

说明:由于使用阿里云 OSS 作为存储引擎,所以不需要再将文件存储到本地,因此将 volumes 中的 data 目录配置去掉; environment 新增了一些配置参数,需根据具体情况进行修改
删除 data 目录和就镜像并重新启动服务:

 docker rm -fv registry_registry_1 && rm -Rf data && docker-compose up

重新push 镜像然后去OSS控制台查看镜像是否正常存储到OSS服务

上一篇 下一篇

猜你喜欢

热点阅读