使用自签名的方式创建Docker私有仓库

时间:2021-08-16 04:14:50

Docker推荐使用CA机构颁发的TLS(Transport Layer Security Protocol)证书来保护docker仓库的安全,但是我们也可以选择使用HTTP或者自签名证书的方式实现本地私有仓库的访问。 本文将通过自签名证书的方式实现本地私有仓库的搭建。

使用自签名的方式创建私有仓库

使用环境

在不同的Docker版本或Linux系统上,部署的过程可能有差别,本文的测试环境为:

  • Ubuntu15.10
  • Docker 1.9.1

准备工作

  • 为了方便测试,最好有两台机器,一台作为私有仓库主机(简称主机,用作镜像仓库),一台作为客户机(从主机下载镜像)
  • 客户机和主机都已经已经安装了Docker
  • 主机已经安装openssl(一般默认已经安装)
  • 主机的域名(domain),这里以dev.leo.com为例

如果没有获得DNS能够解析的域名,我们可以再客户机的hosts文件加上私有仓库的主机名和IP的映射。如果已经有了,则忽略这一步。

~$ sudo vi /etc/hosts

#添加私有仓库的主机名和IP映射, 主机名可以是任意的字符串
192.168.16.160 dev.leo.com

给主机生成证书

#当前工作目录为: ~

#创建一个目录,存放生成的key和cert文件
~$ sudo mkdir -p cert #创建私钥和证书
~$ sudo openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/dev.leo.com.key -x509 -days 365 -out certs/dev.leo.com.crt
Generating a 4096 bit RSA private key
... #省略不重要的信息,以下信息需要填写,注意Common Name需要和主机名(domain)一致
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:GD
Locality Name (eg, city) []:GZ
Organization Name (eg, company) [Internet Widgits Pty Ltd]:LEO
Organizational Unit Name (eg, section) []:TECH
Common Name (e.g. server FQDN or YOUR name) []:dev.leo.com
Email Address []:

在主机上启动支持https的repository容器

启动registry:2镜像的一个容器registry_https,如果本地没有下载registry:2镜像,那么docker将自动下载。

~$ sudo docker run -d -p 5000:5000 --restart=always --name registry_https -v `pwd`/certs:/home/leo/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/home/leo/certs/dev.leo.com.crt -e REGISTRY_HTTP_TLS_KEY=/home/leo/certs/dev.leo.com.key registry:2

在客户机上添加主机的CA证书

在客户机的证书目录下添加CA证书,因为我们使用自签名证书,所以CA证书就是主机的证书。请注意证书所存放文件夹名称要和仓库镜像的地址一致

~$ sudo cp ~/certs/dev.leo.com.crt /etc/docker/certs.d/dev.leo.com:5000/ca.crt
#要重启docker服务
~$ service docker stop && service docker start

在客户机上push/pull镜像

~$ docker push dev.leo.com:5000/ubuntu
~$ docker pull dev.leo.com:5000/ubuntu

保存对私有仓库容器的更新

到目前为止,虽然已经将镜像发布到了容器,而且客户机也已经可以通过pull命令获取到该镜像了。但是容器内部的数据在容器关闭后将会被销毁,所以,最重要的步骤是还需要将容器的更新提交到仓库镜像。

#命令
~$ docker commit registry-container-name registry-image-name:tag
#实例
~$ docker commit registry-https leo-registry:0.1

使用自签名的方式创建Docker私有仓库的更多相关文章

  1. nexus3使用docker运行/创建docker私有仓库/maven私有仓库

    version: '3.2' services: nexus3: container_name: nexus3 hostname: nexus3 image: sonatype/nexus3:3.14 ...

  2. 创建Docker私有仓库

    1.有时候,在公司内部为了提高分享的速度,需要在公司内部自己搭建一个本地的仓库,供私人使用. 2.docker官方提供了一个工具docker-registry,我们可以借助这个工具构建私有镜像仓库a. ...

  3. docker 私有仓库 harbor docker-compose

    c创建docker私有仓库 docker pull registry:2.1.1 mkdir /opt/registry#mkdir /var/lib/registry docker run -d - ...

  4. Docker 私有仓库建立(加密和用户验证)

    (一)生成证书1.mkdir /certs2.cd /certs 3.生成自签名证书 sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days ...

  5. 搭建docker私有仓库(https)

    1.修改openssl.cnf,支持IP地址方式,HTTPS访问在Redhat7或者Centos系统中,文件所在位置是/etc/pki/tls/openssl.cnf.在其中的[ v3_ca]部分,添 ...

  6. 03搭建docker私有仓库

    搭建docker私仓,可以使用docker官方提供的registry镜像.该镜像目前有2.0,2.3和2.3.1版本.它只与1.6.0以上版本的docker兼容.搭建私仓的步骤如下: 一:无代理.无认 ...

  7. 2.使用nexus3配置docker私有仓库

    1,配置走起 1,创建blob存储 登陆之后,先创建一个用于存储镜像的空间. 定义一个name,下边的内容会自动补全. 然后保存. 注意:实际生产中使用,建议服务器存储500G或以上. 2,创建一个h ...

  8. docker 私有仓库简易搭建

    概要 本地私有仓库 局域网私有仓库 总结 概要 docker hub 使用非常方便,而且上面有大量的镜像可以使用. 但是,每次都远程下载镜像速度非常慢,如果能在本地做一个 docker 的仓库,多人协 ...

  9. Docker入门-搭建docker私有仓库

    Docker Hub 目前Docker官方维护了一个公共仓库Docker Hub,其中已经包括了数量超过15000个镜像.大部分需求都可以通过在Docker Hub中直接下载镜像来使用. 注册登录 可 ...

随机推荐

  1. Java虚拟机13:互斥同步、锁优化及synchronized和volatile

    互斥同步 互斥同步(Mutual Exclusion & Synchronization)是常见的一种并发正确性保证手段.同步是指子啊多个线程并发访问共享数据时,保证共享数据在同一时刻只能被一 ...

  2. PHPCMS如何开启手机站点

    现在手机端用户增长急速增长,看天猫今年双十一,有47%交易是移动端交易的,所以手机功能已逐渐替代电脑的功能,使用手机上网已经成为了互联网新的趋势,很多客户以及站长都希望手机能够访问自己的网站,那么今天 ...

  3. Xamarin.Forms——尺寸大小(五 Dealing with sizes)

    如之前所见的大量可视化元素均有自己的尺寸大小: iOS的状态栏高度为20,所以我们需要调整iOS的页面的Padding值,留出这个高度. BoxView设置它的默认宽度和高度为40. Frame的默认 ...

  4. 采购术语PR、PO、RFQ、RFI、SOW、BOM、JIT、VMI、MRO 是什么意思

    PO:Purchase Order Form 采购订单,公司对外使用,还有个PR: ,公司内部使用的采购申请单 PR (Purchase Requirent) 请购单,采购申请单,代表企业内部的申请需 ...

  5. helloWord

    helloWord!!! 在cnblogs安家了

  6. button的padding属性在i8下和chrome下表现不一致

    button的padding属性在i8下和chrome下表现不一致 在ie8下会撑破很多像素,撑破布局 padding: 10px 48px; padding: 1px 35px \0; /* pro ...

  7. 一个故事讲清楚BIO NIO 异步

    转载请引用:一个故事讲清楚NIO 假设某银行只有10个职员.该银行的业务流程分为以下4个步骤: 1) 顾客填申请表(5分钟): 2) 职员审核(1分钟): 3) 职员叫保安去金库取钱(3分钟): 4) ...

  8. Android开发中常见的设计模式(四)——策略模式

    策略模式定义了一些列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变换. 假设我们要出去旅游,而去旅游出行的方式有很多,有步行,有坐火车,有坐飞机等等 ...

  9. Linux 环境下 网络IO模型

    本文讨论的背景是Linux环境下的network IO. IO发生时涉及的对象和步骤: 对于一个network IO (这里我们以read举例),它会涉及到两个系统对象,一个是调用这个IO的proce ...

  10. 关于Spring IOC的学习和理解

    面向对象——三层架构(表现层.业务层.持久层) 三层架构:即表现层.业务层.持久层. ① 持久层:采用DAO模式,建立实体类和数据库表映射(ORM映射).也就是哪个类对应哪个表,哪个属性对应哪个列.持 ...