如何创建一个私有的Docker仓库
目录
一、在docker的官方网站中直接创建
二、搭建自己本地的仓库
2.1、搭建自己的本地仓库
2.2、为本地镜像添加认证
2.2.1、添加证书加密功能
2.2.2、添加用户登录认证
三、部署Harbor仓库
总所周知,Docker的强大主要是依赖于其仓库中镜像的存在,公用仓库不用说,那如何创建一个私有的个人仓库呢,本片文章小编会从三个方面进行简单的阐述。
一、在docker的官方网站中直接创建
首先在官方网址(https://hub.docker.com/)中,创建属于自己的账户,在Repository中创建自己的仓库。
根据所需仓库要求,根据上述选项创建在官网自己的镜像仓库。
远程登录自己的镜像仓库,并进行相应的操作(具体操作在本地搭建私有仓库时进行讲解)。
二、搭建自己本地的仓库
2.1、搭建自己的本地仓库
在Docker的官方镜像中已经给我们提供了自己搭建仓库的镜像,我们只需要下载即可:
##获取官方镜像
[root@server1 ~]# docker pull registry
[root@server1 ~]# docker images registry##以该镜像为基础,启动容器
[root@server1 ~]# docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry##上传镜像(需要先更改镜像名称,以指定上传的仓库)
[root@server1 ~]# docker tag webserver:latest localhost:5000/webservr:latest
[root@server1 ~]# docker push localhost:5000/webservr ##上传##查看挂载的地址
[root@server1 ~]# tree /opt/registry##查看所挂载的镜像
[root@server1 ~]# curl localhost:5000/v2/_catalog
上述过程就是我们简单的搭建了一个个人本地私有仓库,可以进行镜像的上传和获取!
[注] docker在镜像的上传和下载过程中默认的方式为:HTTPS。在上述测试过程中,我们可以临时将本地的仓库设为不安全的通信方式:
##设定registry为不安全的方式
[root@server1 docker]# /etc/docker/daemon.json
##文件内容
{"insecure-registries" : ["myregistrydomain.com:5000"] ##myregistrydomain.com表明仓库的地址
}
2.2、为本地镜像添加认证
2.2.1、添加证书加密功能
##官方文档:https://docs.docker.com/registry/insecure/##创建自签名证书
[root@server1 ~]# mkdir -p certs[root@server1 ~]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.key -x509 -days 365 -out certs/westos.crt##签名填写
##在填写签名是,需要注意域名的填写,需要和认证保持一致##创建成功后,重新搭建容器registry(官方文档:https://docs.docker.com/registry/deploying/)
[root@server1 ~]# docker run -d --name registry -v "$(pwd)"/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.crt -e REGISTRY_HTTP_TLS_KEY=/certs/westos.key -v /op/registry:/var/lib/registry -p 443:443 registry##查看存在的镜像
[root@server1 ~]# curl -k https://localhost/v2/busybox/tags/list##上传镜像
#把生成的证书传到docker的配置文件中
[root@server1 ~]# mkdir -p /etc/docker/certs/reg.westos.org/
[root@server1 ~]# cp ~/certs/wetsos.org.crt /etc/docker/certs/reg.westos.org/ca.crt##本地传输
[root@server1 ~]# docker push localhost:443/webservr
[root@server1 ~]# docker push reg.westos.org/webservr##远程传输
#复制证书文件
[root@server1 ~]# scp /root/certs/westos.org.crt server:/etc/docker/certs/reg.westos.org/ca.crt#远程传输(需要提前更改好标签,做好地址解析)
[root@server2 ~]# docker push reg.westos.org/webserver:latest
2.2.2、添加用户登录认证
##官方文档:https://docs.docker.com/registry/deploying/##安装htpasswd工具
[root@server1 ~]# yum install -y httpd-tools##生成用户加密文件
[root@server1 ~]# mkdir auth
[root@server1 ~]# htpasswd -Bc auth/htpasswd admin ## B 表示强制认证
[root@server1 ~]# htpasswd -B auth/htpasswd linux ## c 表示第一次创建##重现启动容器(使用镜像重新生成)[root@server1 ~]# docker rm -f registry
[root@server1 ~]# docker run -d --name registry -v /opt/registry:/var/lib/registry -p 443:443 -v "$(pwd)"/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key -v "$(pwd)"/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry##登录仓库,进行文件上传
[root@server1 ~]# docker login reg.westos.org
#远程登录:保证网络畅通即可(需要注意的是这里启动时我们采用的是加密的传输方式,所以需要先将证书复制到docker文件中(/etc/docker/certs.d/reg.westos.org/ca.crt))
[root@server2 ~]# docker login reg.westos.org
三、部署Harbor仓库
##资源下载:https://github.com/goharbor/harbor/releases##解压安装包
[root@server1 app]# tar zxf harbor-offline-installer-v2.3.2.tgz ##安装docker-compose文件
[root@server1 harbor]# cat /usr/local/bin/docker-compose-linux-x86_64 >> /usr/local/bin/docker-compose
[root@server1 harbor]# chmod +x /usr/local/bin/docker-compose
[root@server1 harbor]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose##编辑配置文件
[root@server1 harbor]# vim harbor.yml.tmpl##运行
[root@server1 harbor]# ./install/sh[root@server1 harbor]# ./install.sh --with-notary --with-chartmuseum --with-trivy
【注】上述安装过程中可能会出现安装包的依赖性,此时需要安装docker-compose管理工具:
如果注释证书,此时需要将--insecure-reghistry添加到客户端的Docker的守护进程中,默认文件夹位置为:/etc/docker/daemo.json
内容:
{"registry-mirrors": ["https://reg.westos.org"], ####换成自己的镜像仓库地址,下载时也会首先从本地下载"insecure-registries" : ["172.25.21.5:80", "0.0.0.0"]}
配置完成后需要重启服务:
systemctl restart docker docker-compose down -v docker-compose up -d
启动成功后,自动产生docker-compose.yml的配置文件
启动后的容器:
在网页登录:
使用docker-compose命令查看启动的容器组 :
##harbor的使用,通常情况下使用docker-compose进行管理
docker-compose down 关闭管理组中的的所有容器
docker-compose stop 临时停止容器组中的所有容器
docker-compose start 重现启动容器组中的所有容器
根据需求重新安装Harbor:
上述则是harbor的安装,使用过程则是分为图形界面的使用,以及在终端上的仓库上传,在上传时,首先要做的就是登录此时登录的仓库为:reg.westos.org,同时必须设置标签(这里做签名),在获取镜像时需要写入全部名称(eg:docker pull reg.westos.org/westos/ubuntu)。其他操作和私有仓库相同,这里不再做赘述,只进行签名认证的阐述。
##镜像签名
##部署根证书
/etc/docker/certs.d/reg.westos.org/ca/crt
~/.docker/tls/reg.westos.org:4443/ca.crt##启用docker内容信任
export DOCKER_CONTENT_TRUST=1
export DOCKER_CONTENT_TRUST_SERVER=https://reg.westos.org:4443##长传镜像
docker push reg.westos.org/library/nginx:lattest##过程会生成两个密钥,包括根root key和仓库key##删除签名
export DOCKER_CONTENT_TRUST=0
docker trust reovke reg.westos.org/library/nginx:latest
如何创建一个私有的Docker仓库相关推荐
- docker05(docker仓库创建和管理)
docker05(docker仓库创建及管理) 一.引子 笔者前几篇给大家介绍了如何创建镜像,想必大家创建完镜像之后都想要把自己的镜像存一份吧,那我们如何能够将自己的镜像保存到镜像仓库呢?接下来笔者带 ...
- docker通过模板创建镜像以及容器、仓库和数据管理
笔记内容:docker通过模板创建镜像以及容器.仓库和数据管理 笔记日期:2018-02-05 25.5 通过模板创建镜像 25.6 容器管理 25.7 仓库管理 25.8 数据管理 25.5 通过模 ...
- 互联网架构师必备技术 Docker仓库与Java应用服务动态发布那些事
讲师简介: James老师 十余年Java经验,曾就职于携程.人人网等一线互联网公司,专注于java领域,精通软件架构设计,对于高并发.高性能服务有深刻的见解, 在服务化基础架构和微服务技术有大量的建 ...
- 创建尽可能小的 Docker 容器
当我们在使用 Docker 的时候,你会很快注意到你正在下载很多 MB 作为你的预先配置的容器.一个简单的 Ubuntu 容器很容易超过 200 MB,并且随着在上面安装软件,尺寸在逐渐增大.在某些情 ...
- 搭建Harbor企业级docker仓库
from: https://www.cnblogs.com/pangguoping/p/7650014.html 搭建Harbor企业级docker仓库 一.Harbor简介 1.Harbor介绍 H ...
- SpringBoot部署项目到Docker仓库
SpringBoot部署项目到Docker仓库 1.开启远程控制端口 Centos7开启方式: vim /lib/systemd/system/docker.service 找到ExecStart行 ...
- docker(三)docker仓库
文章目录 Docker仓库 上传 拉取 registry 加密 远程主机怎么连接 docker-compose Docker仓库 仓库(Repository)是集中存放镜像的地方.以下介绍一下 Doc ...
- 基于滴滴云安装 Docker 并上传镜像到滴滴云 Docker 仓库
前言 Docker 简化了容器中应用程序进程的管理过程.容器允许您在资源隔离的进程中运行应用程序.容器与虚拟机类似,但容器更便携.更资源友好,并且更依赖于主机操作系统. 本文将介绍如何用滴滴云服务器在 ...
- CentOS7搭建私有化Docker仓库Harbor
CentOS7搭建私有化Docker仓库Harbor CentOS7搭建私有化Docker仓库Harbor Docker仓库Harbor下载 配置要求 硬件配置要求 软件配置要求 端口要求 安装依赖软 ...
最新文章
- python字典方法汇总_python字典的操作总结
- Recom Recall
- 【虚拟化实战】存储设计之七Block Size
- erp系统方案书_一次ERP选型实施失败的血泪教训!
- Angular rxjs fromEvent使用的一个例子
- CF1404C:Fixed Point Removal(离线)(树状数组二分)
- jna 使用_使用JNA的透明JFrame
- 如何设置Windows版Go —快速简便的指南
- c++ string 回文串_第33期:上海自来水来自海上,回文字符串验证!
- XMLDictionary 解析的使用
- c语言字符串去除第一个和最后一个_387. 字符串中的第一个唯一字符
- P3707 [SDOI2017]相关分析
- 原相机怎么拍出网图_教你如何用iPhone原相机拍照也能网红风
- 前端-鼠标经过后图标变色
- 迈克尔.杰克逊时代的意义
- 【转载】任正非:鼓足干劲,力争上游,不畏一切艰难困苦
- Coding 码市:携手开发者与创业者,重新定义软件外包
- java.lang.ClassNotFoundException: org.eclipse.jdt.internal.compiler.env.INameEnvironment
- 教大家看懂安卓build.prop文件详情
- html ul变成三角形,用CSS来画空心三角形的方法
热门文章
- WeTest明星工具-移动端性能测试PerfDog初探
- RTSP视频绘图 -- 笔记
- 操作系统面试常问——for考研复试面试
- 各种浏览器的USERAGENT格式(useragent)
- 平生事,此时凝睇,谁会凭栏意!(3)
- WebRtc 音频引擎-linux demo
- 使用PIL的Image.fromarray报错KeyError: ((1, 1, 1), ‘|u1‘)
- Linux系统编程网络编程1
- python信息熵的计算
- flex布局超级详细的完整教程(看完印象深刻)