docker自建hub

docker自建hub

月光魔力鸭

2023-05-02 09:08 阅读 567 喜欢 0

由于速度或存储或业务问题,可能会需要自建docker仓库,这里简单记录下通过dockerregistry镜像自建docker仓库。

registry

registry仓库: https://hub.docker.com/_/registry

操作文档: https://docs.docker.com/registry/deploying/

最新版镜像拉取命令: docker pull registry:latest

部署

一句话部署:

docker run -d -p 5000:5000 --restart=always --name registry registry:2

还有一些其他的配置选项以及共享卷配置等。

存储库定义

docker run -d \
  -p 5000:5000 \
  --restart=always \
  --name registry \
  -v /mnt/registry:/var/lib/registry \
  registry:2

/var/lib/registry是容器内存储镜像的目录,将该目录映射到宿主机的/mnt/registry目录中。(牢记一点 : 容器销毁后容器内的所有资源都是会被销毁的,所有需要持久化的数据都需要选择外部的共享卷来存储)

增加SSL证书

docker run -d \
  --restart=always \
  --name registry \
  -v "$(pwd)"/certs:/certs \
  -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 \
  -p 443:443 \
  registry:2

宿主机内的端口可能并不是443,则需要通过nginx来转发,通过nginx也需要增加ssl相关的配置。


server {
  listen 443 ssl;
  server_name  ***.***.com;
  ssl_certificate cert/cert.crt;
  ssl_certificate_key cert/ert.key;
  ssl_session_timeout 5m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
  ssl_prefer_server_ciphers on;
  charset utf-8;

  location / {
      proxy_pass https://localhost:8375;
      client_max_body_size    1000m;
      proxy_http_version 1.1;
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Forwarded-Host $http_host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

增加帐号密码验证

  1. 创建一个包含用户名密码的文本
$ mkdir auth
$ docker run \
  --entrypoint htpasswd \
  httpd:2 -Bbn testuser testpassword > auth/htpasswd
  1. 停止镜像
docker container stop registry
  1. 启动带有验证的仓库
docker run -d \
  -p 5000:5000 \
  --restart=always \
  --name registry \
  -v "$(pwd)"/auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  -v "$(pwd)"/certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  registry:2
  1. 尝试拉取镜像,并失败
  2. 登录密码
docker login myregistrydomain.com:5000

docker-compose创建仓库

docker-compose.yml

registry:
  restart: always
  image: registry:2
  ports:
    - 5000:5000
  environment:
    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:
    - /path/data:/var/lib/registry
    - /path/certs:/certs
    - /path/auth:/auth

如何从公共仓库copy镜像到自有仓库

  1. 拉取镜像
docker pull ubuntu:16.04
  1. 标记镜像
docker tag ubuntu:16.04 localhost:5000/my-ubuntu

3.推送镜像到仓库

docker push localhost:5000/my-ubuntu
  1. 删除本地缓存
 docker image remove ubuntu:16.04
 docker image remove localhost:5000/my-ubuntu
  1. 尝试从自己的仓库拉取镜像
docker pull localhost:5000/my-ubuntu

最后还是没有使用这个,而是用了 harbor

官网: https://goharbor.io/ 下载: https://goharbor.io/docs/2.8.0/install-config/download-installer/

下载后修改 harbor.yml 配置文件即可。

转载请注明出处: https://chrunlee.cn/article/docker-hub-registry.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
最近有一个任务一直在占满cpu, 总是会让我的服务器宕机,可是还得跑,想来想去想到了docker,印象中可以对cpu进行限制,这里简单记录下过程。
一直有跑着puppeteer在做pdf的生成,可以今天突然发现一个问题:预览与打印生成的PDF不一致,猜测可能是边距导致的,应该是没设置好... 然后当我在本地尝试的时候也发现了这个问题..要么是字符,要么是版本
扩展程序中会有需要请求外部接口获取数据的时候,如果直接在JS中写的话,会跨域,但是谷歌扩展程序支持这种情况,只需要配置一下即可。
最近看某站壁纸挺好看的,抓了几百张放本地...可总不能每天手动去换吧,就做了一个随机更换的小工具。
昨天实现一个tabbar的时候发现怎么都无法跳转,直接拿的官方的demo,后来才发现是自定义tabbar的问题。
写到这里,基本上就完成了我之前一篇文章中写的,我要做一个自己的图床的小程序了。在最初我要做图床的时候,发现在谷歌扩展程序上一无所知,所以才开始学习的这个,到这一步,至少能勉强能跑通自己的小程序了。
在程序中,会有需要后台一直运行的场景。这一节我们来做一个监控某网站的运行状态,如果没有运行,则改变当前的图标。
最开始其实只是网站的一个小改版,导致的需要发送邮件的功能,本身功能不复杂,不做工具的话,几行代码应该就可以搞定的.. 不过后来想想,这个功能应该还是有一定的小需求的,就做成了工具。