Docker镜像仓库
顾名思义,Docker Registry就是用来存储docker镜像的。就像maven私服,我们也可以搭建自己的仓库来存自己的镜像。
在前面的文章中,我们已经提到了如何搭建简单registy服务和使用:Docker入门,这篇文章作进一步介绍名、版本和API等。
一、简单安装使用
- 安装
docker run -d -p 5000:5000 --restart=always --name registry \
-v /data:/var/lib/registry \
registry:2
- 打标签并推送
➜ docker tag busybox 192.168.99.100:5000/erdaoya/busybox
➜ docker push 192.168.99.100:5000/erdaoya/busybox
The push refers to a repository [192.168.99.100:5000/erdaoya/busybox]
Get https://192.168.99.100:5000/v1/_ping: http: server gave HTTP response to HTTPS client
- 配置非认证模式 2中推送报错,给DOCKER_HSOT添加认证,在给docker主机添加启动变量。
# 不同版本和不同机器上的docker配置地方不太一样,如果有多个register,再加--insecure-registry xxx:port
--insecure-registry 192.168.99.100:5000
重启docker daemon,再push就可以了。 4. 停止
docker stop registry && docker rm -v registry
二、镜像命名
2.1 tag
先说tag是怎么玩法:
docker tag IMAGE[:TAG] IMAGE[:TAG]
打标签时,通过:v2
给镜像加tag,如果不加,往仓库推送时,默认是latest。tag名唯一,后面推送的镜像会覆盖前面的,非latest并不会覆盖latest,所以latest并不是最新镜像的意思。
如果有一个myname:v2的镜像,你希望推送到仓库,还希望是latest。先推送v2,在使用docker tag -f myname:v2 myname:latest
,再推送一次latest。
2.2 命名
[仓库地址]<仓库名>:<标签>
- 仓库地址:ip:port 或者域名,没有变成官方仓库
- 仓库名:一般由<用户名>/<软件名>构成,没有用户名表示library。
- 标签:2.1 所述tag
三、register认证配置
这儿有两篇文章可参考:
四、V2 API
官网文档:Docker Registry HTTP API V2
这儿只列出几个查询接口:
4.1 查询镜像列表
➜ work curl http://192.168.99.100:5000/v2/_catalog -s |jq .
{
"repositories": [
"erdaoya/busybox",
"erdaoya/doc"
]
}
4.2 查询tag列表
➜ work curl http://192.168.99.100:5000/v2/erdaoya/busybox/tags/list -s |jq .
{
"name": "erdaoya/busybox",
"tags": [
"latest",
"1.0-SNAPSHOT"
]
}
4.3 查镜像详细信息
curl http://192.168.99.100:5000/v2/erdaoya/busybox/manifests/1.0-SNAPSHOT -s |jq .
五、UI管理
官方没有提供web界面,第三方提供了一些,如下:
docker run -d \
-p 8080:8080 \
--name registry-web \
-e REGISTRY_URL=http://192.168.99.100:5000/v2 \
-e REGISTRY_NAME=192.168.99.100:5000 \
hyper/docker-registry-web