利用docker官网提供的registry镜像创建私有仓库

一、首先从docker官网拉取registry镜像:

docker pull registry

二、然后运行该镜像:

docker run --name MyRegistry -d -v /data/DockerRegistry:/var/lib/registry -p 5000:5000 registry

其中,-v /data/DockerRegistry:/var/lib/registry表示将镜像库映射到宿主机的/data目录

验证仓库运行:

http://ip:5000/v2/

其中,v2表示registry的tag,该url会返回一个空'{}'。

三、推送本地镜像到仓库:

先说下docker仓库中镜像的命名格式:registry.mydaemon.com/redis/redis-master:latest,共由三部分组成。

registry.mydaemon.com:表示仓库服务器地址

redis:表示镜像仓库的分类

redis-master:表示镜像名称

:latest:表示版本

1、首先对本地镜像打tag,告知镜像仓库的地址:

docker tag redis-master 192.168.0.100:5000/redis/redis-master:1.0

2、推送镜像到仓库:

docker push 192.168.0.100:5000/redis/redis-master:1.0

注意,push的时候可能会遇到一下提示:

The push refers to a repository [192.168.0.100:5000/redis/redis-master]
Get https://192.168.0.100:5000/v1/_ping: http: server gave HTTP response to HTTPS client

这是因为客户端push的时候采用https协议,而registry未使用https导致的。

解决方法如下:

在/etc/docker/目录下创建daemon.json文件,并写入如下内容:

{ "insecure-registries":["192.168.0.110:5000"] }

然后重启docker:

service docker restart

接着再执行push就可以了:

[root@ahaii docker]# docker push 192.168.0.100:5000/redis/redis-master:1.0
The push refers to a repository [192.168.0.100:5000/redis/redis-master]
e5bc8ffdee47: Pushed
babc1e95c4f0: Pushed
ebc4b691c405: Pushed
6363afe92ed2: Pushed
78e49376f417: Pushed
b8aa150f5f16: Pushed
b51149973e6a: Pushed
1.0: digest: sha256:7c60ce71ba4026b2b35e78c86dfgddf7ae171bf1d2903a567b964ad9a07f26f9 size: 1786

通过页面可以看到镜像已经存在:

以上的搭建,是最简单模式,没有安全认证的设置。

下面用官方的registry v2搭建私有仓库,自生成签字证书(用于https),并设置登陆认证

1、获取registry:

docker pull registry:2

2、在registry仓库目录下创建cert目录,并利用openssl自生成签名:

#mkdir certs
#openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key -x509 -days 99999 -out certs/domain.crt

出现如下信息:

Generating a 4096 bit RSA private key
..........................++
............................................................................................++
writing new private key to 'certs/domain.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:docker
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:docker.damoin.com
Email Address []:ahaii@ahaii.com

主要输入registry服务器的域名,其他的可以不用填写。

3、创建登陆帐号密码:

#mkdir auth
#docker run --entrypoint htpasswd registry:2 -Bbn ahaii ahaii123 > auth/htpasswd

这里创建的帐号/密码为:ahaii/ahaii123

4、运行带有TLS认证的registry容器:

[root@ahaii DockerRegistry]# docker run -d -p 5000:5000 --restart=always --name registry \
> -v `pwd`/auth:/auth \
> -v /data/local/DockerRegistry:/var/lib/registry \
> -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

5、运行成功后,可以通过页面登陆查看:

地址栏里输入:https://docker.damoin.com:5000/v2/后,会要求登陆。输入ahaii/ahaii123后登陆成功:

注意:是https。

6、将本地镜像推送到仓库:

registry客户端登陆:

docker login docker.damoin.com:5000

会要求输入帐号密码,输入之后提示:

Error response from daemon: Get https://docker.damoin.com:5000/v1/users/: x509: certificate signed by unknown authority

客户端不信任registry自生成的证书,解决->让registry客户端信任registry自生成的证书:

将registry服务器上生成的certs/domain.crt 拷贝到registry客户端的/etc/docker/certs.d/docker.damoin.com:5000/目录下,并命名为ca.crt(certs.d/docker.damoin.com:5000目录默认没有,自己创建) 
[root@ahaii DockerRegistry]# ls /etc/docker/certs.d/docker.damoin.com:5000/
ca.crt

然后继续登陆仓库,提示登陆成功:

[root@ahaii certs]# docker login docker.damoin.com:5000
Username: ahaii
Password:
Login Succeeded

好,现在继续push镜像到仓库:

[root@ahaii DockerRegistry]# docker push docker.damoin.com:5000/redis/redis-master:1.0
The push refers to a repository [docker.damoin.com:5000/redis/redis-master]
e5bc8ffdee47: Pushed
babc1e95c4f0: Pushed
ebc4b691c405: Pushed
6363afe92ed2: Pushed
78e49376f417: Pushed
b8aa150f5f16: Pushed
b51149973e6a: Pushed
1.0: digest: sha256:7c60ce71ba4026b2b35df7c86118ddf7ae171bf1d2903a567b964ad9a07f26f9 size: 1786

OK,push成功,通过浏览器查看如下:

Docker应用四:搭建docker镜像仓库(包括自生成https证书、登陆认证)的更多相关文章

  1. [转]Ubuntu18.04下使用Docker Registry快速搭建私有镜像仓库

    本文转自:https://blog.csdn.net/BigData_Mining/article/details/88233015 1.背景 在 Docker 中,当我们执行 docker pull ...

  2. 详解docker实战之搭建私有镜像仓库 - kurbernetes

    1.实战目的 搭建企业私有的镜像仓库,满足从开发环境推送和拉取镜像.当我们使用k8s来编排和调度容器时,操作的基本单位是镜像,所以需要从仓库去拉取镜像到当前的工作节点.本来使用公共的docker hu ...

  3. 使用docker Registry快速搭建私有镜像仓库

    当我们执行docker pull xxx的时候,docker默认是从registry.docker.com这个地址上去查找我们所需要的镜像文件,然后执行下载操作.这类的镜像仓库就是docker默认的公 ...

  4. 搭建docker镜像仓库(二):使用harbor搭建本地镜像仓库

    目录 一.系统环境 二.前言 三.Harbor 四.使用harbor搭建私有镜像仓库 4.1 环境介绍 4.2 k8smaster节点安装配置harbor 4.2.1 安装harbor离线包 4.2. ...

  5. 搭建docker镜像仓库(一):使用registry搭建本地镜像仓库

    目录 一.系统环境 二.前言 三.使用registry搭建私有镜像仓库 3.1 环境介绍 3.2 k8smaster节点配置镜像仓库 3.3 k8sworker1节点配置从私有仓库上传和拉取镜像 3. ...

  6. 【Docker】(4)搭建私有镜像仓库

    [Docker](4)搭建私有镜像仓库 说明 1. 这里是通过阿里云,搭建Docker私有镜像仓库. 2. 这里打包的镜像是从官网拉下来的,并不是自己项目创建的新镜像,主要测试功能 一.搭建过程 首先 ...

  7. Docker学习笔记之从镜像仓库获得镜像

    0x00 概述 之前我们说到了,Docker 与其他虚拟化软件的一处不同就是将镜像管理纳入到了功能之中.实现虚拟化只是程序能够无缝移植的一部分,而有了镜像管理,就真正取代了我们在移植过程中的繁琐操作. ...

  8. docker使用registry搭建本地私有仓库

    参考链接来自:http://blog.csdn.net/wangtaoking1/article/details/44180901/ 和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时 ...

  9. Docker容器之搭建本地私有仓库

    Docker容器之搭建本地私有仓库 本地私有仓库搭建的具体步骤 首先下载 registry 镜像 docker pull registry 在 daemon.json 文件中添加私有镜像仓库的地址并重 ...

随机推荐

  1. 【Alpha版本发布】爬虫队长正在待命!

    一.基础功能简介 本团队的爬虫能够从网上搜索相关内容, 并归类,把所爬到的网页或各种类型的文档下载到本地上. 上届团队Beta版本爬虫的主要功能如下: a)可爬取网页,问答页并进行问答文件分类. b) ...

  2. 实验二 Java面向对象程序化设计

    实验二 Java面向对象程序设计 一.  实验要求 1.完成实验.撰写实验报告,以博客方式发表在博客园 2.实验报告重点是运行结果.遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办 ...

  3. vim搭建C编程IDE

    曾经在一篇关于vim技巧的文章里有一句话:"世界上只有三种编辑器,EMACS.VIM和其它." 我不知道这是不是太过于绝对了,但是从我所看到的每一篇linux下编程以及文字编辑的文 ...

  4. tcp/ip客户端与服务器

    单击“发送数据”把数据发送到指定IP地址的指定端口号 using System; using System.Collections.Generic; using System.ComponentMod ...

  5. spring冲刺第二天

    昨天查找了安卓开发的相关资料以及炸弹人游戏的资料. 由于今天课程比较多,只在晚上将安卓开发环境配置完成. 在安装软件时环境配置出现了问题,不过问过同学后成功解决.

  6. 《Spring1之 第一次站立会议(重发)》

    < 第一次站立会议(重发)> 昨天,我对我们团队要做的项目进行了相关资料的查找,我找到了服务器和客户端的相关代码以及找到了把它们通信所使用TCP/IP等协议: 今天,我把找到的代码和协议资 ...

  7. Alpha冲刺阶段博客汇总

    第一篇(冲刺前安排):http://www.cnblogs.com/Aragaki-Yui/p/8893752.html 第二篇(冲刺第一天):http://www.cnblogs.com/Araga ...

  8. [转帖]TLS 版本问题

    转帖 From https://www.cnblogs.com/xjnotxj/p/7252043.html 一.环境: CentOS 6.8nginx 1.6.0php 7.0.10 二.背景 最近 ...

  9. SpringBoot(十二)_springboot整合PageHelper

    我之所以会发现这个PageHelper这个东东 是因为公司在使用 ,刚开始我也没太注意这个插件,感觉不就是个分页插件吗?也就那样,直到一天,我在网上找了个代码生成器,用来构建代码,因为它是针对mysq ...

  10. delphi ERP框架

    之前做c/s架构,接了有家装饰的一个ERP项目,做了一个ERP框架,现在转后端开发了,这些东西还是蛮怀念的,就开源出来吧,有需要的同学可以参考. https://github.com/qianlnk/ ...