docker005 registry 仓库
官方文档: https://docs.docker.com/registry/configuration/
搭建私有仓库
从官方提供的registry镜像简单搭建一套本地私有仓库.
bash
# Step 1: 搭建仓库
# mkdir -pv /opt/data/registry # 没有的目录, docker会创建
docker run -d -p 5000:5000 \
--restart=always \
--privileged=true \
-v /data/registry:/var/lib/registry \
--name='registry' \
registry:2
# 参数说明:
# -v /opt/data/registry:/tmp/registry
# 默认情况下,会将仓库存放于容器内的/tmp/registry目录下,指定本地目录挂载到容器
# --privileged=true
# CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,
# 不加上传镜像会报权限错误(OSError: [Errno 13] Permission denied: ‘/tmp/registry/repositories/liibrary’)
# 或者(Received unexpected HTTP status: 500 Internal Server Error)错误
上传镜像到私有仓库
https://docs.docker.com/engine/reference/commandline/commit/
bash
registry_ip='10.10.10.101'
# Step 2:
# 对镜像做一些修改
docker run -it ubuntu bash
# 修改国内源,装vim net-tools等
# Step 3:
# docker commit 镜像
docker commit -m="add mirrors, install vim net-tools" -a='okeyear@163.com' 2263bed44655 myubuntu:1.0
docker images
# docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# OPTIONS说明:
# -a :提交的镜像作者;
# -c :提交时候执行的Dockerfile指令;
# -m :提交时的说明文字;
# -p :在commit时,将容器暂停。
# Step 4:
# tag标记, 修改成符合私服规范的tag;
# 如果已经打了tag, 可省略
# docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
docker tag myubuntu:1.0 ${registry_ip}:5000/myubuntu:1.0
# Step 5:
# 修改docker配置文件/etc/docker/daemon.json, 允许http方式传输
# 因为是json格式, 这个粘贴进去之后,注意前后是否要加逗号
# "insecure-registries": ["${registry_ip}:5000"] ,
# "insecure-registries": [
# "10.10.10.10:5000"
# ]
service docker restart
# Step 6:
# 上传前查看
curl -XGET http://${registry_ip}:5000/v2/_catalog
# push上传
docker push ${registry_ip}:5000/myubuntu:1.0
# 上传后查看
curl -XGET http://${registry_ip}:5000/v2/_catalog
# 查看所有的image和tag
for i in $(curl -XGET http://${registry_ip}:5000/v2/_catalog | jq '.repositories[] | tostring')
do
curl -s -XGET http://${registry_ip}:5000/v2/${i//\"/}/tags/list
done
从私有仓库下载镜像
bash
# Step 7:
# pull下载, 在其他地方使用
# 需要在/etc/docker/daemon.json中registry-mirrors配置私有仓库地址
# 先删除本地的images
docker rmi ${registry_ip}:5000/myubuntu:1.0 myubuntu:1.0
# 从仓库pull一个
docker pull ${registry_ip}:5000/myubuntu:1.0
docker images