docker自建hub

docker自建hub

月光魔力鸭

2023-05-02 09:08 阅读 555 喜欢 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


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
前一阵子做了个图床,可以粘贴上传,查看服务器上的文件... 但是自己的服务器总是有问题..空间还小,就怕哪天没钱续费了。同事昨天想要一个七牛的图床,在网上找了下,只找到了 qiniu upload files插件,自己使用了下,挺好用,但是没有复制粘贴
ubuntu 配置nginx反向代理,这里简单记录下,后续再复习..
接下来,我们综合上面的配置,再加一个选项页面配置,做一个天气预报的小栗子。
近期有添加数学公式的需求,找来找去,最后还是选择了最简单的。tinymce+kityformula
BUG 报错Tainted canvases may not be exported 。 在通过canvas 调用 toDataURL的时候出现的问题。
很久之前学习chrome扩展插件的时候已经做过一个了,好久没咋用,最近又跑了一个存储服务,准备在配合这个服务做个图床,以后就用这个了,之前的服务器到期忘了迁移数据都没了,这次换了服务器,在家里了,估计以后不会再做了吧,这个算是最后一个了,有啥问题就在这个进行优化了。
小程序需要用到用户的手机号码,看了下API 以及相关的demo,基本都是服务端进行解密的,问题是需要的参数并没有用到secret,只需要 session_key / iv /encryptedData 即可,那完全可以在客户端进行处理啊。
登录方式现在非常多,不过像我这种小站让用户自己注册基本是不可能的了,只能依赖现有的第三方的登录来集成,之前有集成github,不过这个太过针对性,这里准备集成QQ互联登录,慢慢记录下。