docker私有仓库搭建并且配置仓库认证

什么是Docker Registry:

Docker Registry由三个部分组成:index,registry,registry client。
可以把Index认为是负责登录、负责认证、负责存储镜像信息和负责对外显示的外部实现,而registry则是负责存储镜像的内部实现,而Registry Client则是docker客户端。

私有仓库搭建

1.安装Docker Registry,Docker版本需要1.6以上:
安装方法详见我的另一文章centos7 docker安装,我这边已经安装好了。

docker --version
Docker version 1.12.5, build 7392c3b

2.安装Registry,并启动(启动方法具体见官方的registry):

docker pull registry

默认情况下,会将仓库存放于容器内的/var/lib/registry(官网Dockerfile中查看)目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/var/lib/registry下,如下:
docker run -d -ti --restart always --name docker-hub -p 5000:5000 -v /docker-hub/registry:/var/lib/registry registry

3.可以用docker images 查看镜像,docker ps -a查看容器启动情况。

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
registry            latest              c9bd19d022f6        9 weeks ago         33.27 MB
hello-world         latest              c54a2cc56cbb        5 months ago        1.848 kB
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
7411a02041aa        registry            "/entrypoint.sh /etc/"   3 minutes ago       Up 3 minutes        0.0.0.0:5000->5000/tcp   docker-hub

4.访问私有仓库,由于刚启动还没有提交镜像,所以这里显示为空。

[root@localhost ~]# curl -XGET 127.0.0.1:5000/v2/_catalog
{"repositories":[]}
  • 查看镜像版本列表

curl -XGET 127.0.0.1:5000/v2/image_name/tags/list

5.push镜像到仓库;

[root@localhost ~]# docker tag hello-world 127.0.0.1:5000/helloworld
[root@localhost ~]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
registry                    latest              c9bd19d022f6        9 weeks ago         33.27 MB
127.0.0.1:5000/helloworld   latest              c54a2cc56cbb        5 months ago        1.848 kB
hello-world                 latest              c54a2cc56cbb        5 months ago        1.848 kB
[root@localhost ~]# docker push 127.0.0.1:5000/helloworld 
The push refers to a repository [127.0.0.1:5000/helloworld]
a02596fdd012: Pushed 
latest: digest: sha256:a18ed77532f6d6781500db650194e0f9396ba5f05f8b50d4046b294ae5f83aa4 size: 524
[root@localhost ~]# curl 127.0.0.1:5000/v2/_catalog
{"repositories":["helloworld"]}
[root@localhost ~]# 

我上传了一个测试的helloworld镜像,这边再查询的就可以看见了。

如果出现无法从私有仓库pull镜像或无法push到私有仓库的问题,如下报错情况。

[root@localhost ~]# docker pull 192.168.1.163:5000/hellworld
Using default tag: latest
Error response from daemon: Get https://192.168.1.163:5000/v1/_ping: http: server gave HTTP response to HTTPS client
[root@localhost ~]# 

这是因为我们启动的registry服务不是安全可信赖的。这是我们需要修改docker的目录/etc/docker/下创建 daemon.json 文件,添加下面的内容:

$ tee /etc/docker/daemon.json << EOF
{ "insecure-registries":["192.168.1.163:5000"] }
EOF

保存后重启docker。

systemctl restart docker.service

然后再PULL即可。

私有仓库认证

私有仓库搭建以后其他所有客户端均可以push、pull,docker官方提供认证方法对docker仓库进行权限保护。
我这只用的用户权限限制,官网配置是TLS和用户权限验证一起使用。

1.删除原启动的仓库容器

docker stop docker-hub
docker rm -f docker-hub

2.创建存放密码账号的文件

mkdir -p /docker-hub/auth
docker run --entrypoint htpasswd registry -Bbn testuser testpassword > auth/htpasswd

3.重新启动docker-hub容器

docker run -d -p 5000:5000 --restart=always --name docker-hub \
  -v /docker-hub/registry:/var/lib/registry \
  -v /docker-hub/auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  registry

4.现在客户端再pull、push就会提示报错,无法提交,需要登录私有仓库。

登录
docker login -u testuser -p testpassword 192.168.1.163:5000
退出
docker logout 192.168.1.163:5000

认证以后无法直接在服务器查看 curl 127.0.0.1:5000/v2/_catalog 仓库的镜像,会出现报错,但是可以用浏览器访问。

参考网址:
https://docs.docker.com/registry/deploying/#/running-a-domain-registry

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容