转载自:https://www.bilibili.com/read/cv15219863/?from=readlist



  1. #1.下载registry仓库并设置数据存放的目录(并生成认证账号密码)
  2. docker pull registry:2
  3. mkdir -vp /opt/data/auth #宿主机认证目录
  4. mkdir -vp /opt/data/registry #宿主机仓库目录
  5. # 采用--entrypoint进行执行
  6. docker run --entrypoint htpasswd httpd:2 -Bbn testuser testpassword > auth/htpasswd
  7. #2.运行下载的仓库镜像(我们常常指定一个本地数据卷给容器)
  8. docker run -d -p 5000:5000 --name registry -v /opt/data/registry:/var/lib/registry registry:2 #未认证
  9. ## 加入认证 (已失效)
  10. docker run -d -p 5000:5000 --restart=always --name docker-hub \
  11. -v /opt/data/registry:/var/lib/registry \
  12. -v /opt/data/auth:/auth \
  13. -e "REGISTRY_AUTH=htpasswd" \
  14. -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  15. -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
  16. registry
  17. #Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制
  18. # 3.修改docker的配置文件,让他支持http方式,上传私有镜像 (本地)
  19. tee /etc/docker/daemon.json <<EOF
  20. # 写入如下内容
  21. {
  22. "registry-mirror": [
  23. "https://registry.docker-cn.com"
  24. ],
  25. "insecure-registries": [
  26. "10.10.107.221:5000"
  27. ]
  28. }
  29. EOF
  30. # 4.修改docker的服务配置文件(Ubuntu此步骤可以跳过)
  31. vim /lib/systemd/system/docker.service
  32. # 找到[service]这一代码区域块,写入如下参数
  33. [Service]
  34. EnvironmentFile=-/etc/docker/daemon.json
  35. # 5.重新加载docker服务
  36. systemctl daemon-reload
  37. # 6.重启docker服务
  38. systemctl restart docker
  39. # 注意:重启docker服务,所有的容器都会挂掉
  40. docker run -d -p 5000:5000 --name docker-registry -v /opt/data/registry:/var/lib/registry registry
  41. # 7.修改本地镜像的tag标记,往自己的私有仓库推送
  42. #docker tag weiyigeek/hello-world-docker 10.10.107.221:5000/weiyigeek #对于修改名称的
  43. $docker commit -m "alpine-sh" -a "weiyigeek" a63 10.10.107.221:5000/alpine-sh
  44. sha256:b75ef26a9e1d92924914edcb841de8b7bdc0b336cea2c6cfbaaf6175e24472c6
  45. $docker login 10.10.107.221:5000
  46. Username: testuser
  47. Password:
  48. WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
  49. Configure a credential helper to remove this warning. See
  50. https://docs.docker.com/engine/reference/commandline/login/#credentials-store
  51. Login Succeeded
  52. #上传我们的镜像文件
  53. $docker push 10.10.107.221:5000/alpine-sh
  54. The push refers to repository [10.10.107.221:5000/alpine-sh]
  55. 2a499f806f16: Pushed
  56. f1b5933fe4b5: Pushed
  57. latest: digest: sha256:6d13420cb9ce74095e2a71f565fc8c15ba17b40933e14534fc65775025eedd18 size: 735
  58. # 8.下载私有仓库的镜像(查看)
  59. docker pull 10.10.107.221:5000/weiyige
  60. # http://10.10.107.221:5000/v2/_catalog #查看仓库 需要进行认证
  61. # http://10.10.107.221:5000/v2/[image_name]/tags/list #查看镜像版本列表
  62. curl -XGET http://10.10.107.221:5000/v2/_catalog -u testuser:testpassword
  63. {"repositories":["alpine-sh"]}

可以从下图看到设置账号密码认证后直接访问Registry API将受到限制

  1. # (1) Registry API
  2. /var/lib/registry
  3. # (2) Harbor 本地目录中
  4. /data/harbor/registry/docker/registry/v2
  5. # 查看镜像 Manifest 对应的blob id
  6. $ cat repositories/release/cyclone-server/_manifests/tags/v0.5.0-beta.1/current/link
  7. sha256:6d47a9873783f7bf23773f0cf60c67cef295d451f56b8b79fe3a1ea217a4bf98
  8. # 查看镜像 Manifest
  9. $ cat blobs/sha256/6d/6d47a9873783f7bf23773f0cf60c67cef295d451f56b8b79fe3a1ea217a4bf98/data
  10. # Blob 数据的存储
  11. # 查看镜像 blob 的位置和大小
  12. $ du -s blobs/sha256/71/7118e0a5b59500ceeb4c9686c952cae5e8bfe3e64e5afaf956c7098854a2390e/data
  13. 7560 blobs/sha256/71/7118e0a5b59500ceeb4c9686c952cae5e8bfe3e64e5afaf956c7098854a2390e/data

(2) 为Registry私有镜像仓库配置auth认证与tls证书

  1. # 创建参数
  2. docker run -d \
  3. -p 443:443 \
  4. --restart=always \
  5. --name registry \
  6. -v /app/registry/data:/var/lib/registry \
  7. -v /app/registry/auth:/auth \
  8. -v /app/registry/cert:/cert \
  9. -e "REGISTRY_HTTP_ADDR=0.0.0.0:443" \
  10. -e "REGISTRY_AUTH=htpasswd" \
  11. -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  12. -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
  13. -e "REGISTRY_HTTP_TLS_CERTIFICATE=/cert/hub.weiyigeek.top.crt" \
  14. -e "REGISTRY_HTTP_TLS_KEY=/cert/server.key" \
  15. registry:2
  16. # 查看创建的registry 容器
  17. $ docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}"
  18. CONTAINER ID NAMES PORTS
  19. c8657bd20936 registry 0.0.0.0:443->443/tcp, 5000/tcp

(3) 登陆远程仓库时报证书签名错误及其解决办法

  1. ~$ docker login hub.weiyigeek.top
  2. Login did not succeed, error: Error response from daemon: Get https://hub.weiyigeek.top/v2/: x509: certificate signed by unknown authority
  3. Username: WeiyiGeek
  4. Password: ********
  5. # 解决办法:
  6. # (1) 在 /etc/docker/daemon.json 中配置insecure-registries字段,表示允许不安全的仓库。
  7. "insecure-registries": ["192.168.12.111:5000","hub.weiyigeek.top"]
  8. # (2) 从官方文档可知客户端要使用tls与Harbor通信使用的还是`自签证书`,那么必须建立一个目录`/etc/docker/certs.d`
  9. # 如果配置可能会出现 x509: certificate signed by unknown authority 错误提示。
  10. mkdir -vp /etc/docker/certs.d/hub.weiyigeek.top
  11. cp -a /deployapp/harbor/harbor.pem /etc/docker/certs.d/hub.weiyigeek.top/harbor.crt

6.云原生之Docker容器Registry私有镜像仓库搭建实践的更多相关文章

  1. 4.云原生之Docker容器数据持久化介绍与实践

    转载自:https://www.bilibili.com/read/cv15182308/?from=readlist #### 创建一个web容器并创建一个数据卷挂载到容器的/webapp目录下(默 ...

  2. 3.云原生之Docker容器三大核心概念介绍

    转载自:https://www.bilibili.com/read/cv15181760/?from=readlist docker search --no-trunc=false [镜像名称] #搜 ...

  3. 5.云原生之Docker容器网络介绍与实践

    转载自:https://www.bilibili.com/read/cv15185166/?from=readlist 例如, 当在一台未经过特殊网络配置的centos 或 ubuntu机器上安装完d ...

  4. Docker部署Registry私有镜像库

    拉取镜像 docker pull registry:2.6.2   生成账号密码文件,这里采用htpasswd方式认证 docker run --rm --entrypoint htpasswd re ...

  5. 2.云原生之Docker容器环境安装实践

    转载自:https://www.bilibili.com/read/cv15181036/?from=readlist 官方一键安装脚本 补充时间:[2020年4月22日 11:00:59] 一键安装 ...

  6. 8.云原生之Docker容器镜像构建最佳实践浅析

    转载自:https://www.bilibili.com/read/cv15220861/?from=readlist 本章目录 0x02 Docker 镜像构建最佳实践浅析 1.Dockerfile ...

  7. 7.云原生之Docker容器Dockerfile镜像构建浅析与实践

    转载自:https://www.bilibili.com/read/cv15220707/?from=readlist Dockerfile 镜像构建浅析与实践 描述:Dockerfile是一个文本格 ...

  8. 1.云原生之Docker容器技术基础知识介绍

    转载自:https://www.bilibili.com/read/cv15180540/?from=readlist

  9. Docker:搭建私有镜像仓储(image registry)(4)

    搭建私有仓储,其实本质上也是运行了一个官方提供的(Registry)镜像的容器:生产环境中,我们要搭建自己的专有仓储 下载registry镜像 docker pull registry 运行镜像 do ...

随机推荐

  1. P6622 信号传递 做题感想

    题目链接 前言 在这里分享两种的做法. 一种是我第一直觉的 模拟退火.(也就是骗分) 还有一种是看题解才搞懂的神仙折半搜索加上 dp . 模拟退火 众所周知,模拟退火 是我这种没脑子选手用来骗分的好算 ...

  2. 爬虫(14) - Scrapy-Redis分布式爬虫(1) | 详解

    1.什么是Scrapy-Redis Scrapy-Redis是scrapy框架基于redis的分布式组件,是scrapy的扩展:分布式爬虫将多台主机组合起来,共同完成一个爬取任务,快速高效地提高爬取效 ...

  3. VGA设计(原理说明。Verilog代码实现,仿真结果)

    各类显示屏的显示原理大部分是利用人眼的视觉暂留效应.比如之前的数码管显示就是设计每个周期内各个小段按顺序显示,来达到显示一个数字的效果. VGA同理,显示屏在显示时是一个像素一个像素地显示,在人眼看来 ...

  4. 1.9. 触摸按钮(touch pad)测试

    1.9.1. 基础 Esp32部分GPIO内置了touch按钮功能(电容式),具体有touch功能的引脚在配置为touchpad后,单片机读入的电容值随是否被触碰发生变化,系统根据电容值的变化判断判断 ...

  5. DQL基础查询和DQL条件查询

    DQL:查询表中的记录 1.语法 select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 limit 分页限 ...

  6. MYSQL(基本篇)——一篇文章带你走进MYSQL的奇妙世界

    MYSQL(基本篇)--一篇文章带你走进MYSQL的奇妙世界 MYSQL算是我们程序员必不可少的一份求职工具了 无论在什么岗位,我们都可以看到应聘要求上所书写的"精通MYSQL等数据库及优化 ...

  7. MySQL Shell无法拉起MGR集群解决办法

    MySQL Shell无法拉起MGR集群解决办法 用MySQL Shell要重新拉起一个MGR集群时,可能会提示下面的错误信息: Dba.rebootClusterFromCompleteOutage ...

  8. MySQL设置字段从指定数字自增,比如10000

    MySQL设置字段从指定数字自增,比如10000. 方式一 方式二 方式一 此时就解决了MySQL从指定数字进行自增 CREATE TABLE hyxxb( hyid INT AUTO_INCREME ...

  9. LOJ6062「2017 山东一轮集训 Day2」Pair(Hall定理,线段树)

    题面 给出一个长度为 n n n 的数列 { a i } \{a_i\} {ai​} 和一个长度为 m m m 的数列 { b i } \{b_i\} {bi​},求 { a i } \{a_i\} ...

  10. RestTemplate用法

    RestTemplate 用法 RestTemplate简介 RestTemplate 是一个同步的web http客户端请求模板工具,spring框架做的抽象模板, 常见的http客户端请求工具有: ...