前置条件:准备一台服务器(79),服务器已安装docker。在79服务器创建/mnt/registry目录并挂接不少200G的磁盘空间。

注意:regisry是docker私服仓库,这里的步骤支持regisry:2.7.0版本,高于该版本的registry不支持htpasswd。(可以安装更高版本,但需要使用2.7.0版本来生成鉴权密码文件,参考服务端安装的第4步)

注意:该指引是基于docker20.10.7及以下版本安装registry,如果docker版本高于,则生成证书的章节参考:docker20.10.8及以上版本安装registry镜像库存在san ssl 证书_风云琪文的博客-CSDN博客

服务端安装:

1、执行以下命令生成您自己的证书:

cd /mnt/registry

mkdir -p certs

openssl req \

-newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \

-x509 -days 36500 -out certs/domain.crt

生成自己的证书时,请确保在字段 Common Name 中指定一个域名。例如,本示例中该字段被指定为 dockerhub.kubekey.local。

2、拉取registry:2.7.0

docker pull registry:2.7.0

使用docker images查看是否拉取成功。

3、79服务器开放443端口

firewall-cmd --zone=public --add-port=443/udp --permanent

firewall-cmd --reload

注意:修改宿主机的防火墙策略以后需要重启docker服务:service docker restart

4、创建鉴权目录和生成鉴权密码文件

mkdir -pv /mnt/registry/auth

docker run --entrypoint htpasswd registry:2.7.0 -Bbn youraccount 自定义密码 > /mnt/registry/auth/htpasswd

参数解析

-B:强制密码加密

-b:使用命令行中的密码而不是提示输入密码

-n:不更新加密文件,只将加密后的用户名密码显示在屏幕上

youraccount是账号,可以自定义自己的账号,我这里直接就自定义为youraccount

5、执行以下命令启动 Docker的hardor仓库

需要密码才能登录使用registry的方式:

docker run -d \--restart=always \--name registry \-v /mnt/registry/certs:/certs \-v /mnt/registry:/var/lib/registry \-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 \-v /mnt/registry/auth:/auth \-e "REGISTRY_AUTH=htpasswd" \-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \-p 443:443 \-v /etc/localtime:/etc/localtime:ro \registry:2.7.0

不需要密码就使用registry的方式,在安装kubesphere时使用镜像库建议不要密码:

docker run -d \--restart=always \--name registry \-v /mnt/registry/certs:/certs \-v /mnt/registry:/var/lib/registry \-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 \-v /etc/localtime:/etc/localtime:ro \registry:2.7.0

使用docker ps查看registry运行状态

参数说明:

-d:后台静默运行容器。

–restart:设置容器重启策略。

–name:命名容器。

-v:挂载信息

-e REGISTRY_HTTP_ADDR:设置仓库主机地址格式。

-e REGISTRY_HTTP_TLS_CERTIFICATE:设置环境变量告诉容器证书的位置。

-e REGISTRY_HTTP_TLS_KEY:设置环境变量告诉容器私钥的位置。

-p:将容器的 443 端口映射到Host主机的 443 端口

-e REGISTRY_AUTH:验证方式,固定写法

-e REGISTRY_AUTH_HTPASSWD_REALM:验证域名,固定写法

-e REGISTRY_AUTH_HTPASSWD_PATH:容器中验证文件的路径,要写文件的路径

6、在 /etc/hosts 中添加一个条目,将主机名(即仓库域名;在本示例中是 dockerhub.kubekey.local)映射到您机器的私有 IP 地址,如下所示。

vi /etc/hosts

添加以下内容

# docker registry

192.168.10.79 dockerhub.kubekey.local

使用ping dockerhub.kubekey.local测试是否配置成功

7、执行以下命令,复制证书到指定目录,并使 Docker 信任该证书。

mkdir -p  /etc/docker/certs.d/dockerhub.kubekey.local

cp /mnt/registry/certs/domain.crt  /etc/docker/certs.d/dockerhub.kubekey.local/ca.crt

注意:证书的路径“dockerhub.kubekey.local”与域名相关联。当您复制路径时,如果与上面设置的路径不同,请使用实际域名。

8、在浏览器访问https://192.168.10.79/v2,如果返回json数据则registry安装成功。

10.查看registry镜像库有哪些目录,即有哪些镜像名称清单

https://192.168.10.79/v2/_catalog

11.可以根据以下的方式进行访问进行指定镜像的的查看,如果是其他的镜像直接将tomcat换成其他的就可以,下面的示例中tomcat是镜像名称

https://192.168.10.79/v2/tomcat/tags/list

客户端测试:

前提:客户的已安装docker

1、在客户机器创建放置证书的目录和将服务端的证书拷贝到证书目录下

mkdir -p  /etc/docker/certs.d/dockerhub.kubekey.local

scp root@192.168.10.79:/mnt/registry/certs/domain.crt /etc/docker/certs.d/dockerhub.kubekey.local/ca.crt

2、编写/etc/hosts文件,增加域名解析

vi /etc/hosts

添加以下内容

# docker registry

192.168.10.79 dockerhub.kubekey.local

使用ping dockerhub.kubekey.local测试是否配置成功

3、登录registry,按提示输入账号密码,在服务端安装的第4步设置的账号密码

docker login dockerhub.kubekey.local

4、设置docker客户的支持http协议访问registry

vim /etc/docker/daemon.json
# 添加
{"insecure-registries": ["registry的IP:端口"]}
}

重启docker

systemctl daemon-reload
systemctl restart docker

5、最好把docker的公共和私服的镜像库也设置了

vim /etc/docker/daemon.json
#添加
{
"registry-mirrors" : ["http://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com","http://registry的IP:端口"],
"insecure-registries": ["registry的IP:端口"]
}

6、从私服镜像库下拉nginx镜像

docker pull dockerhub.kubekey.local/nginx:latest

如果提示:Error response from daemon: manifest for dockerhub.kubekey.local/nginx:latest not found。表示正常情况,只是registry私服镜像库中没有nginx镜像。

7、将nginx镜像推送到私服镜像库registry

假设docker只有容器名称为nginx且版本为latest的镜像nginx:latest

首先要在docker为镜像打标签,满足push的条件

docker tag nginx:latest dockerhub.kubekey.local/nginx:latest

然后再push到registry

docker push dockerhub.kubekey.local/nginx:latest

注意:标签多了前缀dockerhub.kubekey.local,是不是有点坑

docker20.10.7及以下版本安装registry镜像库指引相关推荐

  1. python不同版本安装;第三方库的安装

    python不同版本安装以及安装第三方库 1.安装不同版本的python:                python2.7 & python3.6 ps:安装过程中需要注意的是默认没有配置环 ...

  2. Docker 安装私有镜像库的简单使用

    公司的网络实在是太差了, 想着自己搭建一个私有的镜像库进行使用测试使用.... docker pull registry.docker-cn.com/library/registry docker t ...

  3. mac允许安装未知来源_macOS 10.13及以上版本安装允许任何来源没了怎么开启?

    用户在升级了macOS 10.13系统以后,打开一些应用文件的时候会失败同时提示该应用文件"来自身份不明的开发者",或者无法识别影像文件等情况,这个时候我们就需要开启"设 ...

  4. ArcGIS Notebook Server 10.9.1 Linux版本安装示例

    博客主页:https://tomcat.blog.csdn.net 博主昵称:农民工老王 主要领域:Java.Linux.K8S 期待大家的关注

  5. ubuntu python3.7修改默认pip版本_详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本 安装python3后使用pip和pip3的区别...

    Python3.4已经默认安装了pip为什么执行不了我的谁说过,念念不忘就该放.但我也记得你说过,爱一个人不是一天两天的事. 如何升级到python3版本并且安装pip3 确保你的系统上已经安装好了 ...

  6. docker:安装ubuntu镜像

    当使用服务器时,需要使用 docker 管理虚拟环境. 教程 1. 确认 docker 是否安装 docker -v 或者: docker 如未安装,请先安装 2. 安装 ubuntu 14.04 镜 ...

  7. 02_tensorflow2环境安装、CUDA 10.1 和CUDnn 7.6.5 版本安装、https://tensorflow.google.cn/overview中概述翻译

    1.新手入门 1.1 安装tensorflow环境 1.安装了Anaconda,进入Anaconda Prompt: 关于安装Anaconda的博文参考:python安装.anaconda安装.pyc ...

  8. java6 已安装更高版本_Java 10及更高版本的思考

    java6 已安装更高版本 大家好 Java 10于2018年3月20日发布.我认为许多软件团队将阻止升级. 从Java 8到Java 9的专业人员人数可能还更少.为什么会这样,原因是传统的障碍以及对 ...

  9. xcode 4 最低的要求是 10.6.6的版本,如果你是 10.6.3的版本,又不想升级的话。可以考虑通过修改版本号的方法进行安装

    xcode 4 最低的要求是 10.6.6的版本,如果你是 10.6.3的版本,又不想升级的话.可以考虑通过修改版本号的方法进行安装. 一.打开控制台: 二.使用root用户: 命令:sudo -s ...

  10. mysql for mac 10.12_mac 10.12 版本 安装mysql - sylvia的博客

    今天安装mysql 遇到了坑,总结如下: 我的mac版本是10.12.1,于是安装了   https://dev.mysql.com/downloads/mysql/    下的DMG Archive ...

最新文章

  1. 零基础入门学习Python(27)-文件2
  2. TLS实现代码段加密
  3. batchnorm2d参数 torch_pytorch方法测试详解——归一化(BatchNorm2d)
  4. 为了压榨CNN模型,这几年大家都干了什么
  5. 转tigase 安装
  6. HBase1.0.0 实现数据增删查
  7. html读取servlet,简单html与servlet交互(HTML利用servlet读取txt)
  8. Log4j2完整XML参考(详细注释说明)
  9. sql去重常用的基本方法
  10. 处理之后的图像句柄传到显示框_PS基本原理,图像变换与变形操作,移动图像小技巧...
  11. android log4j slf4j,Android中的LOG4J
  12. FileZilla中文乱码解决方法 与 设置界面为中文
  13. 网站微信扫码登录回调不跳转问题
  14. 微信支付商户号如何开通0.2%提现费率/手续费?
  15. html中js左右图片切换效果,JS实现图片切换特效
  16. 51nod 3199 操作栈
  17. 与计算机和网络有关的英语,网络的英语作文(通用10篇)
  18. XUI框架实现比原生框架更好看并且功能更齐全的EditText框?,以及如何获取EditText的值
  19. DataGrip 太好使了
  20. 用计算机绘制火灾逃生路线图,绘制火灾逃生路线图,逃生疏散计划,演练活动记录..._消防考试_帮考网...

热门文章

  1. java 录制_Java屏幕录像
  2. [CTF]RAR加密原理
  3. vue-实现换一换功能
  4. postman如何使用mockserver?
  5. 白盒测试工具CodeTest
  6. emoji java 转码_Java Emoji Converter (Emoji表情转换工具)
  7. 可怕的pyspider猫途鹰
  8. 局域网计算机文件共享推理,行测技巧:类比推理的“第二规律”
  9. batchplot插件用法_教大家Batchplot批量打印插件用不了怎么办
  10. c语言编程创意表白,C语言和图形界面编程打造——浪漫的表白程序