docker自建hub

docker自建hub

月光魔力鸭

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


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
通过frp做穿透实现https 访问本地http项目。
当我们使用web打印相关的解决方案的时候,还有不少小坑值得注意下,同时需要了解几个小技巧提升在web打印上的友好度,以下整理一些常见的小技巧
扩展程序中会有需要请求外部接口获取数据的时候,如果直接在JS中写的话,会跨域,但是谷歌扩展程序支持这种情况,只需要配置一下即可。
功能来源于客户需求。客户有需求想把班级内所有学生的错题本生成pdf文档下载下来... 目前没有做这个功能,只有页面,还好chrome浏览器有保存pdf的功能,但是一想到这么多的学生,这么多的学科、以及这么多的参数... 还好有puppeteer
最近一段时间想着做个资源网站,奈何没数据,准备从几个相关的站点上抓一些数据,数据量每个站点都在几千万左右,这里简单总结下最近一段时间在做的测试。
最近感觉docker挺好用的,由于测试服务器经常重装,这里先记录下compose文件,后边重装直接复制就行啦。
mysql数据库插入double类型确没有小数点
需求:可能会有在页面加载的时候想执行某个js,例如统计页面的DOM等等。