前期准备

  • 服务器:centos 7.3
  • docker-ce: 18.06.1-ce
  • docker-compose: 1.22.0

docker 安装

首先,更新系统

    yum update
yum upgrade

然后执行安装脚本

#!/bin/sh

#添加docker安装源
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #执行安装命令
sudo yum install -y docker-ce #添加docker用户组
sudo groupadd docker #将当前用户加入docekr用户组
sudo gpasswd -a $USER docker #更新用户组
newgrp docker #修改serivce配置
sudo cp docker.service /lib/systemd/system/ #配置文件需要手动修改
sudo cp docker.conf /etc/default/ sudo systemctl enable docker.service sudo systemctl daemon-reload #启动docker服务
sudo systemctl start docker

将上面的命令保存到docker-install.sh, 然后执行

    sudo -E sh docker-install.sh

进行安装。

docker-compose 安装

执行以下命令安装:

#安装pip
sudo yum -y install epel-release
sudo yum -y install python-pip #安装docker-compose
sudo pip install --upgrade pip
sudo pip install docker-compose --ignore-installed requests

准备加密证书

我们假设repository的域名为registry.domain.com

生成repository仓库https证书

1. 准备根证书

    openssl req -newkey rsa:2048 -nodes -sha256 -keyout certs/ca.key -x509 -days 365 -out certs/ca.crt

执行以上命令,生成证书,Common Name那里要输入我们registry的域名,生成的证书只对该域名有效。其他的可以任意填,生成后可以在certs目录下查看到证书。

2. 签发服务证书

    cd certs

    openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -out domain.csr

    openssl x509 -req -days 365 -in domain.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out domain.crt

生成的domain.crt就是公钥证书,ca.crt 是根证书。我们要把ca.crt交付给docker client端,这样客户端才能校验仓库服务器的身份。

3. 客户端校验文件生成

在客户端校验仓库服务的同时,仓库服务也要校验客户端的身份和权限

    mkdir auth
docker run --entrypoint htpasswd registry:2 -Bbn username password > auth/htpasswd

username和password请自行替换为自己想设定的用户名和密码。

最终docker repository根文件夹的目录结构如下:

启动私有仓库

编写docker-compose file

将如下的配置保存为registry.yaml文件:

version: '3.2'

services:
registry:
image: "registry:2"
container_name: repo_local_network
environment:
- REGISTRY_AUTH=htpasswd
- REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm"
- REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
- REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt
- REGISTRY_HTTP_TLS_KEY=/certs/domain.key
ports:
- ${RPO_PORT}:5000
volumes:
- ${ROOT_PATH}/lib:/var/lib/registry
- ${ROOT_PATH}/certs:/certs
- ${ROOT_PATH}/auth:/auth

放置在dockerenv目录下,同时在dockerenv目录下编写环境变量文件.env

RPO_PORT=443
ROOT_PATH=/opt/docker

ROOT_PATH 根据实际情况修改,RPO_PORT不要去修改,否则会有问题。

启动容器

执行以下命令启动仓库容器:

    cd dockerenv
docker-compose -f registry.yaml up --force-recreate -d

客户端注册和测试

添加仓库CA证书

    mkdir -p /etc/docker/certs.d/registry.domain.com
cp ca.crt /etc/docker/certs.d/registry.domain.com

ca.crt就是我们用来颁发仓库服务证书的自签名证书,重启客户端docker服务。

添加服务器地址(可选)

在/etc/hosts中添加服务器地址:

172.168.170.201 registry.domain.com

如果你的服务器域名是可以通过dns解析的话就不需要这个步骤

身份认证

    docker login -u username -p passwd registry.domain.com

如果一切正常会有如下提示:

WARNING! Your password will be stored unencrypted in /home/whty0/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

测试仓库(optional)

    docker pull busybox
docker tag busybox:latest registry.domain.com/busybox:latest
docker push registry.domain.com/busybox:latest

如果成功的话会有如下提示:

The push refers to repository [registry.domain.com/busybox]

f9d9e4e6e2f0: Pushed

latest: digest: sha256:5e8e0509e829bb8f990249135a36e81a3ecbe94294e7a185cc14616e5fad96bd size: 527

参考网址

搭建docker 私有镜像仓库的更多相关文章

  1. 基于 registry 搭建 Docker 私有镜像仓库

    今天主要介绍使用 registry 来搭建 Docker私有镜像仓库,方便在公司内部项目中使用,registry 也是 Docker 官方提供的一个镜像,操作也很简单. dockerhub: http ...

  2. 使用harborv1.8.0-rc1 搭建docker私有镜像仓库

    概述 搭建一个私有仓库 harbor介绍 harbor是一个开源的docker容器仓库,由下面几个组件组成 + proxy:用来接收docker客户端和浏览器端的请求,并且把请求转发给后端的服务 + ...

  3. 使用Harbor搭建Docker私有镜像仓库

    Harbor介绍:https://goharbor.io/ 前置条件 需要安装了docker和docker-compose 下载Harbor 在harbor下载页(https://github.com ...

  4. 搭建Harbor私有镜像仓库--v1.5.1

     搭建Harbor私有镜像仓库--v1.5.1 1.介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境 ...

  5. 微服务架构 - 搭建docker本地镜像仓库并提供权限校验及UI界面

    搭建docker本地镜像仓库并提供权限校验及UI界面 docker本地镜像仓库的作用跟maven私服差不多,特别是公司级或者是小组级开发好的docker仓库可以上传到本地镜像仓库中,需要用时,直接从本 ...

  6. Docker 私有镜像仓库的搭建及认证

    DockerHub 为我们提供了很多官方镜像和个人上传的镜像,我们可以下载机构或个人提供的镜像,也可以上传我们自己的本地镜像,但缺点是: 由于网络的原因,从 DockerHub 下载和上传镜像速度可能 ...

  7. 容器技术之Docker私有镜像仓库docker-distribution

    在前边的博客中我们说到docker的架构由docker客户端.服务端以及仓库组成:docker仓库就是用来存放镜像的地方:其实docker registry我们理解为存放docker镜像仓库的仓库比较 ...

  8. 容器技术之Docker私有镜像仓库harbor

    前文我们聊到了docker的私有镜像仓库docker-distribution的搭建和简单的使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13058338 ...

  9. 使用Nexus3构建Docker私有镜像仓库

    一.安装Nexus3 Nexus3是Sonatype提供的仓库管理平台,Nuexus Repository OSS3能够支持Maven.npm.Docker.YUM.Helm等格式数据的存储和发布:并 ...

随机推荐

  1. Bluetooth® Low Energy Beacons

    Bluetooth® Low Energy Beacons ABSTRACT (abstract ) 1.This application report presents the concept of ...

  2. SQL Server 数据库空间使用情况

    GO /****** Object: StoredProcedure [dbo].[SpaceUsed] Script Date: 2017-12-01 11:15:11 ******/ SET AN ...

  3. i2c子系统

    linux内核的I2C驱动框架总览(1)I2C驱动框架的主要目标是:让驱动开发者可以在内核中方便的添加自己的I2C设备的驱动程序,从而可以更容易的在linux下驱动自己的I2C接口硬件(2)源码中I2 ...

  4. Oracle日志文件

    转载网站:Oracle技术圈 转载地址:https://www.oraclejsq.com/oraclegl/010300678.html Oracle日志文件 Oracle日志文件是Oracle数据 ...

  5. Web | JavaScript的提升机制

    作用对象: 函数和变量的声明. 作用效果: 会将其声明提升到其所在的作用域的最顶端.函数会优先于变量的声明. //函数的提升优于变量的提升 test(); var a=2; function test ...

  6. phpstrom快捷键

    PhpStorm 常用快捷键和配置 配置 设置代码及字体风格:File->Settings->Editor->Colors&Fonts->Font 安装插件(如:tp, ...

  7. iOS 12 越狱支持 Cydia

    Geosn0w在1月31日宣布推出 OsirisJailbreak12 越狱工具,是目前公开的第一个支持 iOS 12 的越狱,支持 iOS 12.0-12.1.2.项目地址:https://gith ...

  8. 一步一步学习大数据:Hadoop 生态系统与场景

    Hadoop概要 到底是业务推动了技术的发展,还是技术推动了业务的发展,这个话题放在什么时候都会惹来一些争议. 随着互联网以及物联网的蓬勃发展,我们进入了大数据时代.IDC预测,到2020年,全球会有 ...

  9. stm32串口通信实验,一点笔记

    第一次深入学习stm32,花了好长时间才看懂代码(主要是C语言学习不够深入),又花了段时间自己敲了一遍,然后比对教程,了解了利用中断来串口通信的设置方法. 板子是探索版f407,本实验工程把正点原子库 ...

  10. python七类之集合

    集合 一.关键字 : set 定义是 s = {}    #当里面没有元素的时候​​表现为字典数据类型 s = {} #空的{}代表空的字典,而不是集合 print(type(s)) 集合是不可哈希的 ...