当前位置: 首页 > news >正文

Docker--(四)--搭建私有仓库(registry、harbor)

  1. 私有仓库----registry官方提供
  2. registry仓库管理(推送、删除、下载)
  3. 私有仓库----harbor私有镜像仓库

1.私有仓库----registry官方提供

Docker hub官方已提供容器镜像registry,用于搭建私有仓库

        1.1   镜像拉取、运行、查看信息、测试

        (一) 拉取镜像

# docker pull daocloud.io/library/registry:latest

        (二)  运行容器

# docker run --name "pri_registry" --restart=always -d -p 5000:5000 daocloud.io/library/registry 

注:如果创建容器不成功,报错防火墙,解决方案如下

#systemctl stop firewalld

#yum install iptables*

#systemctl start iptables

#iptables -F

#systemctl restart docker

        (三)  查看容器

# docker ps  -a 

        (四)   连接容器查看端口状态

# docker exec -it  1f444285bed8  /bin/sh         //这里是sh 不是bash

 /# netstat -lnp                        //查看5000端口是否开启

在本机查看能否访问该私有仓库,看看状态码是不是200:

# curl  -I  127.0.0.1:5000         //参数是大写的i

2.registry仓库管理(推送、删除、下载)

       2.1  修改请求方式为http

默认为https,不改会在往私有仓库上传时报错报以下错误:

# vim /etc/docker/daemon.json

{ "insecure-registries":["192.168.245.136:5000"] }

重启docker: 

# systemctl restart docker

        2.2  仓库功能测试

为了方便,下载1个比较小的镜像,buysbox

# docker pull busybox

上传前必须给镜像打tag  注明ip和端口:

格式: # docker tag  busybox  私有仓库IP:端口/busybox

# docker tag busybox 192.168.245.136:5000/busybox

Mysql是测试的第二个镜像,从daocloud拉取:

# docker pull daocloud.io/library/mysql

# docker tag daocloud.io/library/mysql 192.168.245.136:5000/daocloud.io/library/mysql

注:tag后面可以使用镜像名称也可以使用id,我这里使用的镜像名称,如果使用官方的镜像,不需要加前缀,但是daocloud.io的得加前缀

上传镜像到私有仓库:

# docker push 192.168.26.144:5000/busybox 

# docker push 192.168.26.144:5000/daocloud.io/library/mysql

        2.3   查看私有仓库里的所有镜像

 查看所有镜像:

# curl -X GET http://192.168.26.144:5000/v2/_catalog

查看镜像所有tag:  curl -X GET http://registry_host:5000/v2/<images_name>/tags/list

# curl -X GET http://192.168.26.144:5000/v2/daocloud.io/library/mysql/tags/list

        2.4  删除仓库里的镜像

查看要删除镜像的Digest:

格式: curl  -I -X GET http://registry_host:5000/v2/<images_name>/manifests/<tag>
# curl -I -X GET http://192.168.26.144:5000/v2/daocloud.io/library/mysql/manifests/v2

其中 Docker-Content-Digest的内容为要删除镜像的 Digest

Digset= sha256:46e16271326ceb468caa89217b4c7bc86788168662fdf8bb45bc4dae6da9d0f1

删除镜像:

格式:curl -I -X DELETE http://10.74.234.17:5001/v2/<images_name>/manifests/<Digest>

# curl -I -X DELETE http://192.168.26.144:5001/v2/<images_name>/manifests/<Digest>

        2.5  拉取私有仓库镜像

格式:docker pull 192.168.26.144:5000/<images_name>

# docker pull 192.168.26.144:5000/busybox 

3.私有仓库----harbor私有镜像仓库

        3.1  框架

loadbalancer:做负载均衡(实验时1核1G;生产时16核64G);

harborA和harborB做高可用(实验时4核4G;生产时4核16G);                     

redis:做数据缓存(生产时4核16G);postgresql:做数据库存储(生产时16核64G);  在对harborA/B做nfs(生产时500G)

(实验时放在一台机器上4核4G;)

        3.2  环境准备

        (一)设置redis(redis、nfs、postgresql在同一台机器上)

# yum install epel-release

# yum -y install redis

# systemctl enable --now redis

# vim /etc/redis.conf

bind 192.168.26.176            //监听地址改为本机

requirepass test123!!           //设置密码

#  systemctl restart redis

        (二 )设置nfs(redis、nfs、postgresql在同一台机器上)

#  yum -y install nfs-utils

#  mkdir -p /data/harbor

#  vim  /etc/exports

/data/harbor    192.168.26.0/24(rw,sync,no_root_squash)

#  systemctl enable --now nfs

设置harbor的挂载点:在两台harbor上设置

# mkdir -p  /data/harbor      设置挂载点

#  vim  /etc/fstab

192.168.26.176:/data/harbor    /data/harbor    nfs    defaults    0 0

# mount -a    或者    # mount -t nfs 192.168.26.176:/data/harbor  /data/harbor

#  mount -a 

# df -Th

注意:如果在harbor客户机中挂载nfs时出现这样:

在该机器上安装nfs的驱动程序并启动然后在重新挂载即可:

 # yum -y install nfs-utils

# systemctl start nfs-utils.service

        (三)  设置postgresql(redis、nfs、postgresql在同一台机器上)

# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 

# yum install -y postgresql13-server

# /usr/pgsql-13/bin/postgresql-13-setup initdb        //初始化postgresql数据

# systemctl enable --now postgresql-13

# vim /var/lib/pgsql/13/data/postgresql.conf

listen_addresses = '*'                                     //监听全网地址

port = 5432                                                    //放开端口

# vim /var/lib/pgsql/13/data/pg_hba.conf

host    all             all             192.168.26.0/24         md5      //设置可连接网端

# systemctl restart postgresql-13

# su - postgres            //切换用户

-bash-4.2$ psql          //进入postgresql

以下操作在posetgresql中进行

# CREATE DATABASE harbor;

# CREATE DATABASE notary_signer;

# CREATE DATABASE notary_server;

# CREATE USER harbor WITH PASSWORD 'test123!!';

# CREATE USER notary_signer WITH PASSWORD 'test123!!';

# CREATE USER notary_server WITH PASSWORD 'test123!!';

# GRANT ALL PRIVILEGES ON DATABASE harbor TO harbor;

# GRANT ALL PRIVILEGES ON DATABASE notary_signer TO notary_signer;

# GRANT ALL PRIVILEGES ON DATABASE notary_server TO notary_server;

postgres=# \l                               //查看库

postgres=# exit
-bash-4.2$ exit                             //退出

        (四)设置loadbalancer  (使用nginx作为代理)

# vim /etc/yum.repos.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

# yum -y install nginx

# cd /etc/nginx/conf.d

# vim harbor-proxy.conf

upstream harbor-service {
    server <harborA_ipaddress>:80;
    server <harborB_ipaddress>:80;
}

server {
    listen       80;
    server_name  harbor.daemon.com;
    access_log  /var/log/nginx/harbor-loadbalance.access.log  main;

    location / {
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://harbor-service;
    }
}

# systemctl start nginx

        (五)设置harbor-A   harbor-B

安装harbor  对企业内的镜像进行统一的管理,并且harbor还带有 用户管理功能, 并且还具备LDAP用户管理域接入功能;

1.事先在两台harbor机其中安装好docker, 并配置好加速器 (作者的博客中有)

2.安装docker-compose:

# curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# chmod a+x /usr/local/bin/docker-compose

# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

harbor 下载地址:https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgz

# tar xf harbor-offline-installer-$(VERSION).tgz -C /usr/local/

# cd /usr/local/harbor

# cp harbor.yml.tmpl harbor.yml

# vim harbor.yml

hostname: 192.168.26.174                  //主机名改为本地主机IP

#https:

#  port: 443

#  certificate: /your/certificate/path

#  private_key: /your/private/key/path          //注释https服务

external_url: https://reg.mydomain.com:8433             //修改外部访问url

#database:

#  password: root123

#  max_idle_conns: 100

#  max_open_conns: 900                               //注释掉内部的数据库

data_volume: /data/harbor                            //数据卷使用harbor-A/B  的挂载点

# Uncomment external_database if using external database.        //配置数据库
external_database:
  harbor:
    host: 192.168.26.176
    port: 5432
    db_name: harbor
    username: harbor
    password: test123!!
    ssl_mode: disable
    max_idle_conns: 2
    max_open_conns: 0
    notary_signer:
    host: 192.168.26.176
    port: 5432
    db_name: notary_signer
    username: notary_signer
    password: test123!!
    ssl_mode: disable
    notary_server:
    host: 192.168.26.176
    port: 5432
    db_name: notary_server
    username: notary_server
    password: test123!!
    ssl_mode: disable

# Uncomment external_redis if using external Redis server            //配置redis
external_redis:
  # support redis, redis+sentinel
  # host for redis: <host_redis>:<port_redis>
  # host for redis+sentinel:
  #  <host_sentinel1>:<port_sentinel1>,<host_sentinel2>:<port_sentinel2>,<host_sentinel3>:<port_sentinel3>
  host: 192.168.26.176:6379
  password: test123!!
  # sentinel_master_set must be set to support redis+sentinel
  #sentinel_master_set:
  # db_index 0 is for core, it's unchangeable
  registry_db_index: 1
  jobservice_db_index: 2
  chartmuseum_db_index: 3
  trivy_db_index: 5
  idle_timeout_seconds: 30

下载所需的镜像:  安装前的准备工作  (注意需要开启docker)

# ./prepare

直接安装:

# ./install.sh

观察docker容器是否全部开启: 

# docker ps -a

 harbor-B  做一样的操作在harbor.yml  主机名的IP需要更该

        (六)访问

         

相关文章:

Docker--(四)--搭建私有仓库(registry、harbor)

私有仓库----registry官方提供registry仓库管理&#xff08;推送、删除、下载&#xff09;私有仓库----harbor私有镜像仓库1.私有仓库----registry官方提供 Docker hub官方已提供容器镜像registry,用于搭建私有仓库 1.1 镜像拉取、运行、查看信息、测试 (一) 拉取镜像 # dock…...

Invalid <url-pattern> [sso.action] in filter mapping

Tomcat 8.5.86版本启动web项目报错Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> [sso.action] in filter mapping 查看项目的web.xml文件相关片段 <filter-mapping><filter-name>SSOFilter</filter-name><url-pattern&g…...

【11】linux命令每日分享——useradd添加用户

大家好&#xff0c;这里是sdust-vrlab&#xff0c;Linux是一种免费使用和自由传播的类UNIX操作系统&#xff0c;Linux的基本思想有两点&#xff1a;一切都是文件&#xff1b;每个文件都有确定的用途&#xff1b;linux涉及到IT行业的方方面面&#xff0c;在我们日常的学习中&…...

Newman+Jenkins实现接口自动化测试

一、是什么Newman Newman就是纽曼手机这个经典牌子&#xff0c;哈哈&#xff0c;开玩笑啦。。。别当真&#xff0c;简单地说Newman就是命令行版的Postman&#xff0c;查看官网地址。 Newman可以使用Postman导出的collection文件直接在命令行运行&#xff0c;把Postman界面化运…...

MySQL:事务+@Transactional注解

事务 本章从了解为什么需要事务到讲述事务的四大特性和概念&#xff0c;最后讲述MySQL中的事务使用语法以及一些需要注意的性质。 再额外讲述一点Springboot中Transactional注解的使用。 1.为什么需要事务&#xff1f; 我们以用户转账为例&#xff0c;假设用户A和用户B的银行账…...

数字IC手撕代码--低功耗设计 Clock Gating

背景介绍芯片功耗组成中&#xff0c;有高达 40%甚至更多是由时钟树消耗掉的。这个结果的原因也很直观&#xff0c;因 为这些时钟树在系统中具有最高的切换频率&#xff0c;而且有很多时钟 buffer&#xff0c;而且为了最小化时钟 延时&#xff0c;它们通常具有很高的驱动强度。 …...

易基因|m6A RNA甲基化研究的数据挖掘思路:干货系列

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。关于m6A甲基化研究思路&#xff08;1&#xff09;整体把握m6A甲基化图谱特征&#xff1a;m6A peak数量变化、m6A修饰基因数量变化、单个基因m6A peak数量分析、m6A peak在基因元件上的分布…...

【微信小程序】-- 页面配置(十八)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…...

玩好 StarRocks,大厂 offer 接不完!|字节跳动、小红书、京东物流、唯品会、腾讯音乐要的就是你!

求职黄金季即将到来&#xff0c;你准备好迎接你的 dream offer 了吗&#xff1f;StarRocks 自创立以来&#xff0c;一直主张为用户创造极速统一的数据分析新范式&#xff0c;让数据驱动创新&#xff0c;而优秀的大数据人才对推动创新有着至关重要的作用。因此&#xff0c;我们推…...

C# IoC控制反转学习笔记

一、什么是IOC IoC-Invertion of Control&#xff0c;即控制反转&#xff0c;是一种程序设计思想。 先初步了解几个概念&#xff1a; 依赖&#xff08;Dependency&#xff09;&#xff1a;就是有联系&#xff0c;表示一个类依赖于另一个类。 依赖倒置原则&#xff08;DIP&a…...

Python解题 - CSDN周赛第33期

本期四道题全考过&#xff0c;题解在网上也都搜得到。。。没有想法&#xff0c;顺手水一份题解吧。 第一题&#xff1a;奇偶排序 给定一个存放整数的数组&#xff0c;重新排列数组使得数组左边为奇数&#xff0c;右边为偶数。 输入描述&#xff1a;第一行输入整数n。(1<n<…...

Session攻击

Session攻击Session攻击简介主要攻击方式会话预测会话劫持中间人攻击会话固定Session攻击简介 Session对于Web应用是最重要的&#xff0c;也是最复杂的。对于Web应用程序来说&#xff0c;加强安全性的首要原则就是:不要信任来自客户端的数据&#xff0c;一定要进行数据验证以及…...

【Linux】Shell详解

&#x1f60a;&#x1f60a;作者简介&#x1f60a;&#x1f60a; &#xff1a; 大家好&#xff0c;我是南瓜籽&#xff0c;一个在校大二学生&#xff0c;我将会持续分享Java相关知识。 &#x1f389;&#x1f389;个人主页&#x1f389;&#x1f389; &#xff1a; 南瓜籽的主页…...

汉字找不同隐私协议

本隐私信息保护政策版本&#xff1a;2021 V1 一、重要提示 请您&#xff08;以下亦称“用户”&#xff09;在使用本平台App时仔细阅读本协议之全部条款&#xff0c;并确认您已完全理解本协议之规定&#xff0c;尤其是涉及您的重大权益及义务的加粗或划线条款。如您对协议有任…...

CEC2017:斑马优化算法(Zebra Optimization Algorithm,ZOA)求解cec2017(提供MATLAB代码)

一、斑马优化算法 斑马优化算法&#xff08;Zebra Optimization Algorithm&#xff0c;ZOA&#xff09;Eva Trojovsk等人于2022年提出&#xff0c;其模拟斑马的觅食和对捕食者攻击的防御行为。 斑马因身上有起保护作用的斑纹而得名。没有任何动物比斑马的皮毛更与众不同。斑…...

【Linux要笑着学】进程创建 | 进程终止 | slab分派器

爆笑教程《看表情包学Linux》&#x1f448; 猛戳订阅&#xff01;​​​​​​​​​​​​&#x1f4ad; 写在前面&#xff1a;本章我们主要讲解进程的创建与终止。首先讲解进程创建&#xff0c;fork 函数是我们早在讲解 "进程的概念" 章节就提到过的一个函数&#…...

数据资产管理建设思考(二)

关于数据资产管理&#xff0c;近两年是数据治理行业中一个热点话题&#xff0c;当然有我们前面提到的国家的政策支持及方向指引的原因。另一方面我们做数据治理的同行们从学习吸收国外优秀的数据治理理论&#xff0c;进一步在实践中思考如何应用理论&#xff0c;并结合我们国家…...

微软发布多模态版ChatGPT!取名“宇宙一代”

文&#xff5c;CoCo酱Ludwig Wittgenstein曾说过&#xff1a;“我语言的局限&#xff0c;即是我世界的局限”。大型语言模型&#xff08;LLM&#xff09;已成功地作为各种自然语言任务的通用接口&#xff0c;只要我们能够将输入和输出转换为文本&#xff0c;就可以将基于LLM的接…...

【学习笔记】深入理解JVM之对象的实例化

参考尚硅谷JVM 102 - 106 集 首发地址&#xff1a;地址 1、JVM对象的实例化 1.1 对象的创建方式 对象有一下几种创建对象的方式 new Object object new Object();Class的newInstance() Object object Object.class.newInstance();Constructor的newInstance&#xff08…...

IP协议的漏洞及防护措施

文章目录一、TCP/IP协议族二、IP协议三、IP协议的安全问题及防护措施一、TCP/IP协议族 二、IP协议 网际协议&#xff08;Internet Protocol&#xff0c;IP&#xff09;是TCP/IP协议族的核心&#xff0c;也是网际层最重要的协议。 IP数据报由首部和数据两部分组成&#xff1b…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...