Docker私有仓库部署记录

2023-11-13

Docker私有仓库部署记录(原创)
一、介绍
1、SSL证书安装部署
2、准备docker环境
3、私有仓库不同方式的部署

二、CA证书安装部署
1、获取SSL证书。可以通过各种云平台购买,或者申请短期免费SSL证书、或者自签证书、再或者使用公开的长年可用的自签证书,样式多种多样任君挑选。
本人在此愿意公开我的自签根证书(30年)和通配符*.myk8s.co自签域名SSL证书(20年),供广大网友内部开发测试使用。以快速部署、降低搭建私有镜像仓库门槛。通配符*.myk8s.co域名证书自签20年时间,应该够用了^-^
https://freessl.org网站能申请短期免费ssl域名证书,不妨试一试,使用起来跟购买证书相同,只是更换起来有点频繁。
2、各公司发行的操作系统预埋了国际根证书,而自签的根证书却不在操作系统里面,所以自签的根证书必须安装才能使用,如果windows访问,也是需要安装自签根证书的。安装根证书之后,自签域名证书与购买域名证书除了使用广度外没多大区别。以centos7环境为例介绍如何安装根证书。
1)GlobalTrustFreeSSLRootCA-E2006.crt为根CA证书,需要安装到操作系统里面。这张自签根证书使用ECC加密算法,使用时比RSA更快,并且还兼容chrome、firefox、edge/ie、搜狗浏览器、qq浏览器、360浏览器等
2)myk8s.co.crtmyk8s.co.key  为myk8s.co的通配符证书和key
3)GlobalTrustFreeSSLRootCA-E2006.key为自签根CA证书的私钥key文件,自签域名证书时才会用到,通常用不到。

首先在每台服务器和电脑上安装证书,然后再安装私有仓库。
把GlobalTrustFreeSSLRootCA-E2006.crt放到/etc/pki/ca-trust/source/anchors,在命令行运行/bin/update-ca-trust,这样证书就导入到系统中去了,/etc/ssl/certs/ca-bundle.trust.crt文件会加入更新的新证书内容。
cp GlobalTrustFreeSSLRootCA-E2006.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust
windows安装自签根证书更简单,右击GlobalTrustFreeSSLRootCA-E2006.crt文件,选择“安装证书”即可。

三、安装Docker环境
yum install -y yum-utils   device-mapper-persistent-data   lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y  docker-ce docker-ce-cli containerd.io
systemctl enable docker
systemctl start docker
systemctl reload-daemon

四、私有仓库部署
方式1、harbor部署
方式2、harbor部署+nginx反代理
方式3、registry部署
方式4、registry部署+docker-registry-web
推荐部署方式为1和4,首先在centos/etc/hosts和在windows下C:\Windows\System32\drivers\etc\hosts 中添加xxx.xxx.xxx.xxx registry.myk8s.co ,让每台服务器和电脑能通过域名找到私有仓库IP。

1、harbor部署
1)二进制下载docker-compose
curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

2)下载harbor(在线包7KB,离线包600M+)
wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-online-installer-v1.8.1.tgz
mkdir -p /data/sslkey
cp myk8s.co.crt、myk8s.co.key  /data/sslkey/
harbor到/usr/local/harbor,修改harbor监听的域名,如下
cat /usr/local/harbor/harbor.yml 
# Configuration file of Harbor

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: registry.myk8s.co

# http related config
#http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  #port: 80

# https related config
https:
#   # https port for harbor, default is 443
  port: 443
#   # The path of cert and key files for nginx
#   certificate: /your/certificate/path
#   private_key: /your/private/key/path
  certificate: /data/sslkey/myk8s.co.cer
  private_key: /data/sslkey/myk8s.co.key

3)安装或更新配置
./install 安装
./prepare 更新配置
4)停止harbor
docker-compose stop
docker-compose down -v
5)开启harbor
docker-compose up -d
docker-compose start

docker login soulchild.cn

顺利的话docker login -u admin -p Harbor12345 registry.myk8s.co 能顺利登录成功,通信都是走的https。

2、harbor部署+nginx反代理
1)harbor安装方法同上
2)配置如下
cat /usr/local/harbor/harbor.yml 
# Configuration file of Harbor

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: registry.myk8s.co

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 80

3)安装或更新配置
./install 安装
./prepare 更新配置
4)停止harbor
docker-compose stop
docker-compose down -v
5)开启harbor
docker-compose up -d
docker-compose start


ssl证书配置在nginx反向代理中,如下
yum -y install nginx
cp myk8s.co.crt、myk8s.co.key  /etc/nginx/
cat /etc/nginx/nginx.conf
server {
    listen       443 ssl;
    server_name  registry.myk8s.co;

    ssl_certificate myk8s.co.crt;
    ssl_certificate_key myk8s.co.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    #ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
            proxy_pass http://xxx.xxx.xxx.xxx;
    }
}

systemctl restart nginx
顺利的话docker login -u admin -p Harbor12345 registry.myk8s.co 能顺利登录成功,通信走的https,nginx到harbor之间走的是http协议。

3、registry部署
docker pull registry
yum -y install httpd
mkdir -p /data/sslkey/
htpasswd  -bn sltk8s sltk8s >> /data/sslkey/users.txt
cp myk8s.co.crt、myk8s.co.key  /data/sslkey/

docker run -d -p 443:5000 --restart=always --name registry \
-v /data/sslkey:/sslkey \
-e REGISTRY_AUTH=htpasswd \
-e REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/sslkey/users.txt \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/sslkey/myk8s.co.crt \
-e REGISTRY_HTTP_TLS_KEY=/sslkey/myk8s.co.key \
registry

docker login registry.myk8s.co -u sltk8s -p sltk8s 顺利的成功登录,也是https通信。

如有兴趣也可以进入容器内部,修改/etc/docker/registry/config.yml修改配置
/etc/docker/registry # cat config.yml
version: 0.1
log:
  fields:
    service: registry
storage:
  delete:
    enabled: true
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
  tls:
    certificate: /sslkey/myk8s.co.crt
    key: /sslkey/myk8s.co.key
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3
auth:
  htpasswd:
    realm: basic-realm
    path: /sslkey/users.txt

4、registry部署+docker-registry-web
registry的部署完全同3,多增加了一个镜像查看删除功能。
docker pull hyper/docker-registry-web

docker run -d -p 80:8080 --name registry-web   \
-e REGISTRY_URL=https://registry.myk8s.co/v2 \
-e REGISTRY_TRUST_ANY_SSL=true  \
-e REGISTRY_BASIC_AUTH="c2x0azhzOnNsdGs4cw==" \
-e REGISTRY_NAME=registry.myk8s.co \
-e REGISTRY_READONLY=false \
hyper/docker-registry-web

REGISTRY_BASIC_AUTH变量是/root/.docker/config.json文件中auth的值,sltk8s的密码密文。

registry部署+docker-registry-web部署同台机器,https://registry.myk8s.co/是私有仓库地址,http://registry.myk8s.co/是docker-registry-web地址,协议不同。

结束,祝你好运!

也可邮件交流:steveqiao@qq.com

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker私有仓库部署记录 的相关文章

随机推荐

  • Android强大的图表开源——MPAndroidChart

    介绍 在APP开发中遇到图表的样式 一般我们要先查询GitHub上比较火的开源框架 这种图标应用广泛 统计 游戏统计 人际关系图等等 用到今天的这个框架MPAndroidChart 点击查看GitHub 一个可以拖动缩放的图表库 包含曲线图
  • 求整数的位数及各位数字之和 (15 分)

    7 5 求整数的位数及各位数字之和 15 分 对于给定的正整数N 求它的位数及其各位数字之和 输入格式 输入在一行中给出一个不超过10 9 的正整数N 输出格式 在一行中输出N的位数及其各位数字之和 中间用一个空格隔开 输入样例 321 输
  • 【Docker】Docker API的使用

    1 通过实训平台进入到操作系统界面 在 后输入vi usr lib systemd system docker service命令 进入编译模式 然后按i 小写 键 修改代码 usr bin dockerd current H tcp 0
  • 创建一维数组,长度为20,元素索引值为索引的二倍,奇数为负偶数为正,然后对数组排序

    import java util Arrays public class ArrayCreate public static void main String args int a new int 20 for int i 0 i lt 2
  • 单屏播放asf和vga文件的教学视频

    在自己的电脑上播放三分屏教学视频时 总觉得左边那两个小屏幕太占位置 还有右上方的小屏幕的播放进度条太短而无法精确拖放 虽然不是很懂HTML 但修改一下代码 还是单屏能播放的 下面是单屏播放asf和vga文件的设置 1 文件夹结构 index
  • CSS 实现七彩圆环loading动画

    前言 CSS 实现七彩圆环loading动画 速速来Get吧 1 实现效果 2 实现步骤 定义父容器宽度为 w 每个圆环之间的gap间距为 gap 圆环的border边框宽为 border root border 5px gap 30px
  • Java小练习——图书管理系统

    目录 一 图书管理系统应具备的功能 二 简单分析如何实现该系统 三 框架图 四 代码实现过程及简析 1 Book类 简析 2 BookShelf类 简析 3 IOperation接口 3 1 AddOperation类 3 2 Borrow
  • 离散事件模型

    离散事件模型通常需要用到队列和线性表 典型的例子是银行业务的模拟 本文参考的是严蔚敏的 数据结构 过程如下 用四个队列表示银行的四个窗口 用一个有序链表存储到达事件和离开事件 在初始化函数里面先初始化四个队列和一个链表 并且产生一个到达事件
  • 解决Eclipse添加新server时无法选择Tomcat7.0

    解决Eclipse添加新server时无法选择Tomcat7 0 新添加tomcat时 出现如下图情况 解决方法 这时打开工作空间目录下的 metadata plugins org eclipse core runtime settings
  • 面试题13. 机器人的运动范围(java+python)

    地上有一个m行n列的方格 从坐标 0 0 到坐标 m 1 n 1 一个机器人从坐标 0 0 的格子开始移动 它每次可以向左 右 上 下移动一格 不能移动到方格外 也不能进入行坐标和列坐标的数位之和大于k的格子 例如 当k为18时 机器人能够
  • 高级快速读入

    namespace fastIO define BUF SIZE 100000 fread gt read bool IOerror 0 inline char nc static char buf BUF SIZE p1 buf BUF
  • 考勤系统需求分析(软件工程)

    前言 随着企业人事管理的日趋复杂和企业人员的增多 企业的考勤管理变得越来越复杂 有一个比较完善的考勤管理系统显得是如此的重要 考勤管理系统是使用计算机管理方式代替以前手工处理的工作 应用计算机技术和通信技术建立一个高效率的 无差错的考勤管理
  • javascript 算法_JavaScript中的算法

    javascript 算法 The word Algorithms or Algo would impact fear in anyone who isn t really strong in maths like me Well toda
  • 2023年无人航空系统与航空航天国际会议(ICUASA 2023)

    2023年无人航空系统与航空航天国际会议 ICUASA 2023 重要信息 会议网址 www icuasa org 会议时间 2023年2月18 20日 召开地点 中国广州 截稿时间 2023年12月30日 录用通知 投稿后2周内 收录检索
  • 事物有哪些特性 ?MySQL 如何保证事物的四大特性 ?

    目录 1 事物有哪些特性 2 MySQL 如何保证事物的四大特性 3 事物的隔离级别 1 事物有哪些特性 1 1 何为事物 事物就是把一件事情的多个步骤 多个操作 打包成一个步骤 一个操作 其中任意一个步骤执行失败 都会进行回退 使影响降到
  • Linux df -h 显示磁盘空间满,但实际未占用满——问题分析

    问题现象 工作中遇到一个问题 在 TX2 系统上 告警提示磁盘空间不够 如图所示 wohu wohu df h Filesystem Size Used Avail Use Mounted on dev root 28G 28G 0 100
  • 关于个人vs调试时“字符串中字符无效“的处理办法

    一开始选中要监视的字符串那一行开始调试时出现字符串中字符无效 后来瞎猫碰到死耗子 选中被监视的下一行时竟然就可以了 希望对大家有帮助 不过原理我不太懂我也是个小白 希望评论区有大佬给我提点提点背后的原理是啥
  • Arnold置乱变换的代码实现与置乱度分析

    1 传统Arnold置乱变换算法简介 Arnold置乱变换 又称为cat映射 是一种基于古典密码体制的图像加密算法 本质上是对长宽相等的图像进行拉伸与折叠操作以改变空间中像素点的位置 从而破坏图像相邻像素点之间的相关性 它的安全性较低 易利
  • 递归查找三级菜单以及Stream流filter()与map()的用法

    查询策略 需求 查询三级菜单 按层级返回并排序 1 给实体类添加字段 用来封装子菜单 TableField exist false 不映射数据库字段 TableField exist false private List
  • Docker私有仓库部署记录

    Docker私有仓库部署记录 原创 一 介绍 1 SSL证书安装部署 2 准备docker环境 3 私有仓库不同方式的部署 二 CA证书安装部署 1 获取SSL证书 可以通过各种云平台购买 或者申请短期免费SSL证书 或者自签证书 再或者使