docker自建hub

docker自建hub

月光魔力鸭

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


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
整理一些相关的信息,防止后续再找不到。
与python后端进行联调,后端协议为jsonrpc ,这里简单记录下jsonrpc的通用请求函数,并附带几个栗子
需求:可能会有在页面加载的时候想执行某个js,例如统计页面的DOM等等。
扩展程序中会有需要请求外部接口获取数据的时候,如果直接在JS中写的话,会跨域,但是谷歌扩展程序支持这种情况,只需要配置一下即可。
ubuntu 配置nginx反向代理,这里简单记录下,后续再复习..
写到这里,基本上就完成了我之前一篇文章中写的,我要做一个自己的图床的小程序了。在最初我要做图床的时候,发现在谷歌扩展程序上一无所知,所以才开始学习的这个,到这一步,至少能勉强能跑通自己的小程序了。
通过frp做穿透实现https 访问本地http项目。
前几天同事抱怨说微博太费劲了... 一万多条记录,可能会把他累死,我心想.. 重复工作不都可以用程序代替么..