docker自建hub

docker自建hub

月光魔力鸭

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


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
mysql主从复制简单模式,一主一从。
简单记录下dockerfile 以及compose配置
chrome 如何查看placeholder样式以及其他伪类样式
ubuntu 配置nginx反向代理,这里简单记录下,后续再复习..
BUG 报错Tainted canvases may not be exported 。 在通过canvas 调用 toDataURL的时候出现的问题。
近期有添加数学公式的需求,找来找去,最后还是选择了最简单的。tinymce+kityformula
mysql数据库插入double类型确没有小数点
最近有系统需要知道性能瓶颈,尝试使用jmeter对重要接口进行并发测试,确定能否支撑一定的用户数量。