部署docker-registry私有仓库

news/2024/7/7 20:00:01 标签: 运维, awk, json

部署docker-registry私有仓库

创建文件夹

  sudo mkdir -p /var/docker-data/{registry,certs,auth}

sudo openssl req -subj '/C=CN/ST=GD/L=GZ/CN=192.192.49.87'\
 -newkey rsa:4096 -nodes -sha256 -keyout /var/docker-data/certs/domain.key \
 -x509 -days 365 -out /var/docker-data/certs/domain.crt
 
sudo mkdir -p /etc/docker/certs.d/192.192.49.87
sudo cp /var/docker-data/certs/domain.crt /etc/docker/certs.d/192.192.49.87/ca.crt

#可能需要OS级信任
sudo cp /etc/dockercerts/domain.crt /etc/pki/ca-trust/source/anchors/192.192.49.87.crt
sudo update-ca-trust

docker container stop registry && docker container rm -v registry

启动

  docker run -d \
 --restart=always \
 --name registry \
 -v /var/docker-data/certs:/certs \
 -v /var/docker-data/auth:/auth \
 -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
 -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
 -e REGISTRY_STORAGE_DELETE_ENABLED="true" \
 -p 443:443 \
registry:2

查看镜像

  curl -X GET --insecure  https://192.192.49.87/v2/_catalog

客户端配置

  sudo mkdir -p /etc/docker/certs.d/192.192.49.87
sudo cp /var/docker-data/certs/domain.crt /etc/docker/certs.d/192.192.49.87/ca.crt

#可能需要OS级信任
sudo cp /etc/dockercerts/domain.crt /etc/pki/ca-trust/source/anchors/192.192.49.87.crt
sudo update-ca-trust

#测试
sudo docker pull busybox
sudo docker tag busybox 192.192.49.87/busybox
sudo docker push 192.192.49.87/busybox

删除仓库镜像

  #先查找镜像的Docker-Content-Digest
curl -v -k -H "Accept: application/vnd.docker.distribution.manifest.v2+json" \
-X GET https://192.192.49.87/v2/busybox/manifests/latest 2>&1 | \
grep 'Docker-Content-Digest'| awk '{print ($3)}'

#再删除元数据
#允许删除 -e REGISTRY_STORAGE_DELETE_ENABLED="true"
curl-v -k -H "Accept: application/vnd.docker.distribution.manifest.v2+json" \-X DELETE https://192.192.49.87/v2/busybox/manifests/<Docker-Content-Digest的值>

#容器内执行garbage-collect垃圾回收,清磁盘
docker exec -it registry /bin/registry \
garbage-collect /etc/docker/registry/config.yml

接入认证

  #用户admin,密码niot1234
docker run --entrypoint htpasswd registry:2 -Bbn admin niot1234 > /var/docker-data/auth/htpasswd

docker container stop registry
docker rm registry

#重启容器
docker run -d \
 --restart=always \
 --name registry \
 -v /var/docker-data/certs:/certs \
 -v /var/docker-data/auth:/auth \
 -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
 -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
 -e REGISTRY_STORAGE_DELETE_ENABLED="true" \
 -e "REGISTRY_AUTH=htpasswd" \
 -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
 -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
 -p 443:443 \
registry:2

docker-compose 配置

安装

  sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version

创建docker-registry-compose.yml

  registry:
restart: always
image: registry:2
ports:
  - 443:443
environment:
  REGISTRY_HTTP_ADDR: 0.0.0.0:443
  REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
  REGISTRY_HTTP_TLS_KEY: /certs/domain.key
#   REGISTRY_AUTH: htpasswd
#   REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
#   REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
volumes:
  - /var/docker-data/registry:/var/lib/registry
  - /var/docker-data/certs:/certs
  - /var/docker-data/auth:/auth

启动

  sudo docker-compose -f docker-registry-compose.yml up -d

END

转载于:https://www.cnblogs.com/fatt/p/10320400.html


http://www.niftyadmin.cn/n/835536.html

相关文章

JS—操作符(一)

1.算数操作符 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible" …

科普P-NP

大多数决策问题是不能用程序解决的 决策问题&#xff1a;对于输入的问题&#xff0c;它的回答要么是YES要么是NO 计算机程序&#xff1a;计算机程序的集合是可数的。集合形如想想程序都是"人"一个一个写下来的&#xff0c;他们存在硬盘上实际也是一系列的0 1 组合&am…

时间戳格式化

Date.prototype.format function (fmt) {var o {"M": this.getMonth() 1, //月份"d": this.getDate(), //日"h": this.getHours(), //小时"m": this.getMinutes(), //分"s": this.getSeconds(), //秒"q": Math…

JS—操作符(二)

1.比较运算 ——又叫关系运算符 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-…

JmsTemplate sendAndReceive 设置超时

通过调用sendAndReceive方法&#xff0c;实现发送消息之后可以同步接收返回信息。 Message replyMsg this.jmsQueueTemplate.sendAndReceive(new MessageCreator(){Overridepublic Message createMessage(Session sn) throws JMSException {TextMessage txtMsg sn.createText…

Redis Labs 再次更改开源许可证,但 Redis 本身不受影响

其实「Redis Labs 再次更改开源许可证」这个说法有标题党的嫌疑&#xff0c;但看到 Redis Labs 的 CTO 也表示这次的变更确实是关于许可证的变更。既然如此&#xff0c;那就顺道借题发挥一下吧&#xff0c;还请各位轻喷。 △ Redis Labs 的官方公告 https://redislabs.com/blog…

Python--day38--JoinableQueue解决生产者消费者模型

############################# # 在消费者这一端&#xff1a;    #每次获取一个数据    #处理一个数据    #发送一个记号&#xff1a;标志一个数据被处理成功#在生产者这一端&#xff1a;  #每一次生成一个数据  #且每一次生产的数据都放在队列中  #在队列中…

黑客帝国装逼的代码雨

在桌面新建一个.txt文件&#xff0c;把下面代码放进去&#xff0c;再把后缀名改成.html&#xff0c;双击打开就好了 <!DOCTYPE html> <html> <head><title>黑客帝国</title> </head> <body> <canvas id"canvas">&l…