搭建docker 私有镜像仓库
前期准备
- 服务器: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 私有镜像仓库的更多相关文章
- 基于 registry 搭建 Docker 私有镜像仓库
今天主要介绍使用 registry 来搭建 Docker私有镜像仓库,方便在公司内部项目中使用,registry 也是 Docker 官方提供的一个镜像,操作也很简单. dockerhub: http ...
- 使用harborv1.8.0-rc1 搭建docker私有镜像仓库
概述 搭建一个私有仓库 harbor介绍 harbor是一个开源的docker容器仓库,由下面几个组件组成 + proxy:用来接收docker客户端和浏览器端的请求,并且把请求转发给后端的服务 + ...
- 使用Harbor搭建Docker私有镜像仓库
Harbor介绍:https://goharbor.io/ 前置条件 需要安装了docker和docker-compose 下载Harbor 在harbor下载页(https://github.com ...
- 搭建Harbor私有镜像仓库--v1.5.1
搭建Harbor私有镜像仓库--v1.5.1 1.介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境 ...
- 微服务架构 - 搭建docker本地镜像仓库并提供权限校验及UI界面
搭建docker本地镜像仓库并提供权限校验及UI界面 docker本地镜像仓库的作用跟maven私服差不多,特别是公司级或者是小组级开发好的docker仓库可以上传到本地镜像仓库中,需要用时,直接从本 ...
- Docker 私有镜像仓库的搭建及认证
DockerHub 为我们提供了很多官方镜像和个人上传的镜像,我们可以下载机构或个人提供的镜像,也可以上传我们自己的本地镜像,但缺点是: 由于网络的原因,从 DockerHub 下载和上传镜像速度可能 ...
- 容器技术之Docker私有镜像仓库docker-distribution
在前边的博客中我们说到docker的架构由docker客户端.服务端以及仓库组成:docker仓库就是用来存放镜像的地方:其实docker registry我们理解为存放docker镜像仓库的仓库比较 ...
- 容器技术之Docker私有镜像仓库harbor
前文我们聊到了docker的私有镜像仓库docker-distribution的搭建和简单的使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13058338 ...
- 使用Nexus3构建Docker私有镜像仓库
一.安装Nexus3 Nexus3是Sonatype提供的仓库管理平台,Nuexus Repository OSS3能够支持Maven.npm.Docker.YUM.Helm等格式数据的存储和发布:并 ...
随机推荐
- Jfinal框架登陆页面的图形验证码
本文转自,http://www.bubuko.com/infodetail-720511.html 验证码的工具类, 这个jfinal自带的也有,但是下面这个和Jfinal自带的有一点点小的改动,(我 ...
- CC2640R2F&TI-RTOS 拿到 TI CC2640R2F 开发板 第三件事就是使用 TI-RTOS 创建 一个任务 和 使用 信号量 超时来闪烁 LED灯
/* * data_process.c * * Created on: 2018年7月5日 * Author: admin */ #include <ti/sysbios/knl/Task.h& ...
- 如何导出SHP文件中的点坐标?(ArcGIS10)
行政区域坐标,网上流传较广的版本是包括海域的,假如你仅仅想要把陆地边界绘出,那么怎么办呢? 现在讲一下用arcgis 10从shp线.面文件中获取对应区域的坐标呢?(点图层忽略第一步) 首先用在arc ...
- Request和Response中文乱码问题的解决方案和区分
首先,在刚接触这个中文乱码问题的时候,还是比较混乱的,因为针对request和response各自都有自己的解决方案,而且思路相似,方法也很相似,又针对get和post两种提交方式,分两种解决中文乱码 ...
- python3爬虫-通过requests获取拉钩职位信息
import requests, json, time, tablib def send_ajax_request(data: dict): try: ajax_response = session. ...
- Excel工作表保护的密码破解与清除...假装自己破解密码系列?
有一次我女朋友让我帮忙解一个excel表格的保护密码,然后~用了宏 网上下载来的Excel经常会有工作表保护,也就是无法修改,妄图做任何修改的时候你就会看见这句话: 您试图更改的单元格或图表位于受保护 ...
- navicat mysql 存储过程
存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. 一.基本数据类型:略 二.变量: 自定义变量:DECLARE a INT ; SET a=100; 可用以 ...
- 获取当前目录下所有php文件内的函数名
$dir = dirname(__FILE__); $files = scandir($dir); foreach($files as $name){ if($name == '.' || $name ...
- Kafka解惑之时间轮 (TimingWheel)
Kafka中存在大量的延迟操作,比如延迟生产.延迟拉取以及延迟删除等.Kafka并没有使用JDK自带的Timer或者DelayQueue来实现延迟的功能,而是基于时间轮自定义了一个用于实现延迟功能的定 ...
- SSL&TlS握手
SSL/TLS简介 •SSL:安全套接字层(secure socket layer) •TLS:传输层安全协议(transport layer security) SSL和TLS都是加密协议,旨在基于 ...