这是我在内部部署Docker Registry时记录下来的笔记,操作环境是Centos 7、Docker 18.06.1-ce

1、运行registry

我当前所使用的主机的IP是192.168.1.249,工作目录在:/data/docker/registry,


  1. # docker run -d -p 5000:5000 --restart always --name registry \
  2. -v /data/docker/registry/data:/var/lib/registry registry:2

此时访问,http://192.168.1.249:5000/v2/_catalog ,返回正常(空json对象),证明部署成功。

2、测试提交镜像


  1. # docker pull nginx:alpine
  2. # docker tag nginx:alpine 192.168.1.249:5000/nginx-alpine
  3. # docker push 192.168.1.249:5000/nginx-alpine

实际不成功,返回错误如下:


  1. The push refers to repository [192.168.1.249:5000/nginx-alpine]
  2. Get https://192.168.1.249:5000/v2/: http: server gave HTTP response to HTTPS client

查看文档得知,在配置文件中添加insecure-registries然后重启docker即可,如下:


  1. # vim /etc/docker/daemon.json
  2. {
  3. "insecure-registries": [ "192.168.1.249:5000"]
  4. }
  5. # systemctl restart docker

此时再push果然成功,除了使用配置文件,下面来配置使用自签名证书。

3、使用自签名证书

生成证书要使用域名,我这里定为:registry.docker.local,(不用域名,直接用IP的话,要修改openssl配置文件,建议用域名)


  1. # mkdir -p /data/docker/registry/certs
  2. # openssl req \
  3. -newkey rsa:4096 -nodes -sha256 -keyout /data/docker/registry/certs/domain.key \
  4. -x509 -days 365 -out /data/docker/registry/certs/domain.crt

生成证书时要输入一些信息,注意Common Name要输入你使用的域名,其它可直接回车,如下:


  1. Country Name (2 letter code) [XX]:
  2. State or Province Name (full name) []:
  3. Locality Name (eg, city) [Default City]:
  4. Organization Name (eg, company) [Default Company Ltd]:
  5. Organizational Unit Name (eg, section) []:
  6. Common Name (eg, your name or your server's hostname) []:registry.docker.local
  7. Email Address []:

启动容器(相关参数按情况调整下,如你可使用443端口,这样在后续就不用带5000这个端口),如下:


  1. # docker run -d \
  2. --restart=always \
  3. --name registry \
  4. -v /data/docker/registry/data:/var/lib/registry \
  5. -v /data/docker/registry/certs:/certs \
  6. -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \
  7. -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  8. -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  9. -p 5000:5000 \
  10. registry:2

4、测试使用

注意,由于是随便自定义的域名,记得先把域名 registry.docker.local添加到/etc/hosts文件,


  1. # docker tag nginx:alpine registry.docker.local:5000/nginx-alpine
  2. # docker push registry.docker.local:5000/nginx-alpine

此时报错,如下:


  1. The push refers to repository [registry.docker.local:5000/nginx-alpine]
  2. Get https://registry.docker.local:5000/v2/: x509: certificate signed by unknown authority

看文档,得知要把 domain.crt 文件放到 /etc/docker/certs.d/registry.docker.local:5000/ca.crt ,(注意,你在哪台机做push操作,就放到哪台机呀)


  1. # mkdir -p /etc/docker/certs.d/registry.docker.local:5000
  2. # cp xxx/domain.crt /etc/docker/certs.d/registry.docker.local:5000/

这时候再push就成功了,如下:


  1. # docker push registry.docker.local:5000/nginx-alpine
  2. The push refers to repository [registry.docker.local:5000/nginx-alpine]
  3. a83dbde6ba05: Layer already exists
  4. 431a5c7929dd: Layer already exists
  5. 39e8483b9882: Layer already exists
  6. df64d3292fd6: Layer already exists
  7. latest: digest: sha256:57a94fc99816c6aa225678b738ac40d85422e75dbb96115f1bb9b6ed77176166 size: 1153

访问 https://registry.docker.local:5000/v2/_catalog,也看到结果,如下:


  1. # curl https://registry.docker.local:5000/v2/_catalog --insecure
  2. {"repositories":["nginx-alpine"]}

看来自定义证书还很不方便,可以使用免费证书:https://letsencrypt.org (Let's Encrypt)

参考:
https://docs.docker.com/registry/deploying/ 
https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry

原文地址:https://blog.csdn.net/envon123/article/details/83623137

Docker部署注册中心、Docker创建私有镜像库、自签名证书、Deploy a registry server的更多相关文章

  1. Docker创建私有镜像仓库

    Docker官方提供了一个工具docker-registry,可以借助这个工具构建私有镜像仓库: 1.拉取registry镜像 # docker pull registry//可以使用 docker ...

  2. 如何在K8S中优雅的使用私有镜像库 (Docker版)

    前言 在企业落地 K8S 的过程中,私有镜像库 (专用镜像库) 必不可少,特别是在 Docker Hub 开始对免费用户限流之后, 越发的体现了搭建私有镜像库的重要性. 私有镜像库不但可以加速镜像的拉 ...

  3. docker搭建harbor私有镜像库

    创建harbor私有镜像库 一.部署准备: harbor软件包   在部署节点上: 1)解压harbor的软件包将harbor目录下所有文件发送到/opt/目录下   tar zxvf harbor- ...

  4. 【下一代核心技术DevOps】:(四)私有镜像库阿里云Docker服务使用

    1.使用阿里云镜像库有很多优点 稳定可靠,阿里技术,放心使用. 国内cdn多节点加速,下载速度非常快 可以和阿里云Git代码集成,不需要第三方CI工具,当然带的自动构建服务也可以和其他的Git库集成, ...

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

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

  6. docker从私有镜像库pull/push镜像问题:Error response from daemon: Get https://xxxx.com/: x509: certificate signed by unknown authority

    docker从私有镜像库pull/push镜像问题:Error response from daemon: Get https://harbor.op.xxxx.com/v2/: x509: cert ...

  7. 第4篇创建harbor私有镜像库

        一.部署准备: 1.准备harbor软件包       在部署节点上:       2.挂载一个磁盘,专门存储harbor镜像和文件     3.进入到/etc/docker/harbor/目 ...

  8. 使用 OpenSSL 创建私有 CA:3 用户证书

    OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 在前文&l ...

  9. 使用 OpenSSL 创建私有 CA:2 中间证书

    OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 本文将在前 ...

随机推荐

  1. Android驱动开发读书笔记五

    第五章 本章介绍了S3C6410开发板的功能,开发板的不同主要是在烧录嵌入式系统的方式不同,以及如何在此开发板上安装Android. 1.安装串口调试工具minicom 首先需要一根USB转串口线,由 ...

  2. 浅谈一类「AC自动机计数」问题

    最近写了几道AC自动机的题.这几题主要考察的是对AC自动机的浅层理解套上计数. 几道计数题 [AC自动机]bzoj3172: [Tjoi2013]单词 把被动贡献看成主动贡献. [状态压缩dp]119 ...

  3. URLError与HTTPError

    urllib2 的异常错误处理 在我们用urlopen或opener.open方法发出一个请求时,如果urlopen或opener.open不能处理这个response,就产生错误. 这里主要说的是U ...

  4. Elasticsearch安装---安装jdk

    1.在Linux 上检查Java版本是否满足要求: java -version 如果运行上面命令时报错:-bash: java: command not found,首先检查是否有jdk ,要是有安装 ...

  5. Hive学习笔记(四)-- hive的桶表

    桶表抽样查询 查看hdfs上对应的文件内容 一个两个桶,第一个桶和第三个桶的数据 task = 4 4 / 2 = 2,一共是两个桶 第1个桶,第1+2个桶

  6. 总结:PHP值得注意的几个问题

    1.除了变量和常量区分大小写外,其他的标识符不区分大小写(例如关键字,类名,函数名等): 2. >>>是无符号右移,不管第一位是0还是1,右移后前面都是补0: 3.在函数中传递数组, ...

  7. selenium2.53用45以下的火狐别太高

    selenium2.53用45以下的火狐别太高在高的火狐需要selenium3

  8. Nginx从入门到放弃-第2章 基础篇

    2-1 什么是Nginx 2-2 常见的中间件服务 2-3 Nginx的特性_实现优点1 2-4 Nginx特性_实现优点2 2-5 Nginx特性_实现优点3 2-6 Nginx特性_实现优点4 2 ...

  9. PHP 函数 ignore_user_abort()

    ignore_user_abort 设置与客户机断开是否会终止脚本的执行.   本函数返回 user-abort 设置的之前的值(一个布尔值). int ignore_user_abort ([ st ...

  10. 如何用字体在网页中画icon

    一.用css雪碧图 1.简介 CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式.它允许将一个页面涉及到的所有零星图片都包含到一张大图中, 利用CSS的“background- ...