参考官方文档:https://docs.docker.com/registry/deploying/

参考 :http://www.tuicool.com/articles/6jEJZj

本例子使用两台centos7虚拟机作为测试
node0:192.168.56.101
node1:192.168.56.102
 
使用域名搭建https的私有仓库
 
1、node1作为私服服务器 配置 node0 node1 和主机的hosts映射
192.168.56.102 lhdocker.com
 
既然使用https,那么我们需要生成证书,本文讲解的是使用openssl自签名证 书,当然也可以使用诸如 Let’s Encrypt 等工具生成证书,首先在node1机 器上生成key:
 
mkdir -p ~/registry/certs
cd ~/registry/certs
openssl genrsa -out lhdocker.com.key
生成密钥文件:
 
openssl req -newkey rsa: -nodes -sha256 -keyout lhdocker.com.key -x509 -days  -out lhdocker.com.crt
输入信息
Country Name ( letter code) [XX]:
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Changping
Organization Name (eg, company) [Default Company Ltd]:modprobe
Organizational Unit Name (eg, section) []:modprobe
Common Name (eg, your name or your server's hostname) []:lhdocker.com
Email Address []:xxxxx@xxx.com
 
这样自签名证书就制作完成了。
由于是自签名证书,默认是不受Docker信任的,故而需要将证书添加到Docker 的根证书中,Docker在CentOS 7中,证书存放路径是 :
 
node1 端:
mkdir -p /etc/docker/certs.d/lhdocker.com
cp lhdocker.com.crt /etc/docker/certs.d/lhdocker.com/
 
node0端:
scp root@lhdocker.com:/etc/docker/certs.d/lhdocker.com/lhdocker.com.crt /etc/docker/certs.d/lhdocker.com/
拉取registry2 镜像
docker pull registry:

启动registry2容器

  docker run -d -p : --restart=always --name registry \
-v `pwd`/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/lhdocker.com.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/lhdocker.com.key \
registry:

测试一下

docker pull kitematic/hello-world-nginx
docker tag kitematic/hello-world-nginx lhdocker.com/kitematic/hello-world-nginx
docker push lhdocker.com/kitematic/hello-world-nginx

如果成功,你会看到如下输出

在node0上进行测试

docker pull lhdocker.com/kitematic/hello-world-nginx

到这里我们的docker私有仓库就搭建完成了

这是没有认证方式的启动方式

在很多场景下,我们需要用户登录后才能访问私有仓库,那么我们可以如下操作: 建立在上文生成证书,同时重启过Docker服务的前提下,我们讲解一下如何配置:

cd ~/registry/
mkdir auth
docker run --entrypoint htpasswd registry:2.2 -Bbn lihong > auth/htpasswd;

启动registry容器的方式有一点区别

  docker run -d -p : --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/lhdocker.com.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/lhdocker.com.key \
registry:

在执行push操作之前需要登录一下

 docker login lhdocker.com

输入上面的用户和密码就可以了

 如果要停止registry服务,执行下面的命令就行了
docker stop registry && docker rm -v registry

docker registry-v2 搭建私有仓库的更多相关文章

  1. Docker入门之四搭建私有仓库

    前面学习了下镜像和容器,今天来学习下仓库,来搭建本地私有仓库.当然可以使用远程的共有的仓库,但在企业中有的还是放在本地,所以需要搭建私有仓库. 一.搭建仓库 可以在容器中run一个仓库镜像. dock ...

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

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

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

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

  4. Docker搭建私有仓库

    1,下载仓库镜像. docker pull  registry    //主要用于搭建私有仓库的. 2,将宿主机端口映射到容器中去,容器的5000端口是不能更改的. docker run -d -p ...

  5. Docker:搭建私有仓库(Registry 2.4)

    一.背景 首先,Docker Hub是一个很好的用于管理公共镜像的地方,我们可以在上面找到想要的镜像(Docker Hub的下载量已经达到数亿次):而且我们也可以把自己的镜像推送上去.但是,有的时候, ...

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

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

  7. Docker 搭建私有仓库

    Docker 搭建私有仓库 环境: docker 版本 :18.09.1 主机地址:192.168.1.79 1.运行并创建私有仓库 docker run -d \ -v /opt/registry: ...

  8. Docker容器学习梳理 - 私有仓库Registry使用

    但有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,这点跟Maven的管理类似.使用私有仓库有许多优点: 1)节省网络带宽,针对 ...

  9. docker学习(8) 在mac机上搭建私有仓库

    docker的私有仓库类似maven的私服,一般用于公司内部搭建一个类似docker hub的环境,这样上传.下载镜像速度较快,本文将演示如何在mac上利用docker-machine搭建无需SSL证 ...

  10. docker 查询或获取私有仓库(registry)中的镜像

    docker 查询或获取私有仓库(registry)中的镜像,使用 docker search 192.168.1.8:5000 命令经测试不好使. 解决: 1.获取仓库类的镜像: [root@sha ...

随机推荐

  1. 系统中sshd进程的查看,数量统计,进程号输出,进程清理命令

    1. 查看sshd进程 ps -ef|grep sshd ps -ef:打开所有的进程 grep sshd:过滤出含有“sshd”字符的进程. 2. 查看sshd进程中的sftp进程,不含查询的进程 ...

  2. HandlerThread: HandlerThread的理解

    Android为了方便对Thread和Handler进行封装,也就是HandlerThread.HandlerThread继承自Thread,说白了就是Thread加上一个Looper.源码: 可以看 ...

  3. 000 vue各种基本指令

    一:vue实例 1.实例 新建项目: 2.程序 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  4. Linux_CentOS软件安装yum

    在 Linux 操作系统下,几乎所有的软件均通过 RPM 进行安装.卸载及管理等操作.RPM 的 全称为 Redhat Package Manager ,是由 Redhat 公司提出的,用于管理 Li ...

  5. Spark通过修改DataFrame的schema给表字段添加注释(转载)

    转载自:https://www.jianshu.com/p/e4c90dc08935 1.需求背景 通过Spark将关系型数据库(以Oracle为例)的表同步的Hive表,要求用Spark建表,有字段 ...

  6. Spark ML 中 VectorIndexer, StringIndexer等用法(转载)

    VectorIndexer 主要作用:提高决策树或随机森林等ML方法的分类效果.VectorIndexer是对数据集特征向量中的类别(离散值)特征(index categorical features ...

  7. Spring cloud微服务安全实战-3-13重构代码

    让代码同时支持两种方式,登陆访问和带着请求头的token访问也可以. 首先做代码的重构 这里改成getSession() 改成这样以后会有一个问题,我用httpBasic登陆成功以后,我的用户信息放在 ...

  8. hadoop记录-flink测试

    1.启动集群 bin/start-cluster.sh 2.jps查看进程 3.打开网页端(192.168.66.128:8081) 4.造数据:nc -lk 9000 5.执行./bin/flink ...

  9. 增强篇3 SAP表字段增强

    有两种方式:  Include  和 Append 1.INCLUDE一般都是标准预留的增强: 以CO01生产订单增强字段为例 在表AUFK中INCLUDE的结构“CI_AUFK”加入自定义字段 保存 ...

  10. Java连接MongoDB示例

    示例代码: package com.zifeiy.snowflake.handle.etl.mongodb; import java.util.ArrayList; import java.util. ...