docker搭建私有仓库
docker搭建私有仓库
前言
我们都很熟悉Docker的公共仓库Docker Hub,我们使用的大部分Docker镜像基本都是来自于Docker Hub,它有一些基本用法,例如:
搜索镜像:docker search pytho
拉取镜像:docker pull python
推送镜像:docker push xxxx/yyyy:1.0
但有的时候,Docker Hub使用起来并不方便,对于企业来讲,一般都需要建立一个本地的私有仓库,来供企业内部使用。本章我们就来介绍下,如何基于docker-registry这个docker官方提供的工具,搭建一个私有的镜像仓库。
搭建docker私有仓库
安装httpd-tools
yum install httpd-tools -y
创建用户密码文件
mkdir -p /home/registry/auth
htpasswd -Bbn thrj thrj@123 > /home/registry/auth/htpasswd
注意:网上有很多是这种方式: docker run --entrypoint htpasswd registry -Bbn username password auth/htpasswd 这个命令指运行docker窗口里的htpasswd命令。
但是现在使用这个命令一直报错:docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: “htpasswd”: executable file not found in $PATH: unknown.
因此使用httpd-tools来创建用户密码文件
创建带用户验证的仓库
docker run -d -p 5000:5000 --restart=always --name myregistry \
-v /home/registry/data:/var/lib/registry \
-v /home/registry/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
registry
解决远程不能访问问题
Error response from daemon: Get "https://192.168.2.123:5000/v2/": http: server gave HTTP response to HTTPS client
-
修改配置
vim /etc/docker/daemon.json
-
添加你的docker私服的ip和端口
-
单个私服务
"insecure-registries": ["106.13.2.249:5000"]
-
多个私服务
"insecure-registries": ["106.13.2.249:5000","106.13.2.250:5000"]
-
-
在私服加入加速镜像(后续登陆docker私服地址)
"registry-mirrors": ["https://3ad96kxd.mirror.aliyuncs.com"]
-
重新加载配置和重启
# 重新加载某个服务的配置文件 systemctl daemon-reload # 重新启动 docker systemctl restart docker
查看与删除
查看私有仓库的镜像
使用方法:
curl -XGET -u <仓库用户名>:<用户名密码> http://<仓库ip地址>:<仓库端口>/v2/_catalog
curl -s -XGET -u thrj:thrj@123 http://192.168.2.122:5000/v2/_catalog | python -m json.tool
查看镜像tag
curl -s -XGET -u thrj:thrj@123 http://192.168.2.122:5000/v2/thrj/jiangsu/laboratorybizservice/tags/list | python -m json.tool
删除私有仓库指定镜像
查看当前镜像记录
curl -I -XGET --header "Accept:application/vnd.docker.distribution.manifest.v2+json" \
-u thrj:thrj@123 http://192.168.2.122:5000/v2/thrj/jiangsu/laboratorybizservice/manifests/1.0.0
获取当前镜像hash值
curl -I -XDELETE -u thrj:thrj@123 \
http://192.168.2.122:5000/v2/thrj/jiangsu/laboratorybizservice/manifests/sha256:1e1327f76f9ec81c7961a32ddb4b4086461f2f803ed7a4e63e0444e4fb3085a2
安装删除镜像插件
curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null sudo chmod a+x /usr/local/bin/delete_docker_registry_image
删除镜像(注意:/home/registry/data/docker/registry/v2属于docker挂载出来的目录)
export REGISTRY_DATA_DIR="/home/registry/data/docker/registry/v2" ls $REGISTRY_DATA_DIR delete_docker_registry_image --image trade-chat
参考博客链接:https://blog.csdn.net/imouse728/article/details/125620369