Docker--(四)--搭建私有仓库(registry、harbor)
- 私有仓库----registry官方提供
- registry仓库管理(推送、删除、下载)
- 私有仓库----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仓库管理(推送、删除、下载)私有仓库----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添加用户
大家好,这里是sdust-vrlab,Linux是一种免费使用和自由传播的类UNIX操作系统,Linux的基本思想有两点:一切都是文件;每个文件都有确定的用途;linux涉及到IT行业的方方面面,在我们日常的学习中&…...
Newman+Jenkins实现接口自动化测试
一、是什么Newman Newman就是纽曼手机这个经典牌子,哈哈,开玩笑啦。。。别当真,简单地说Newman就是命令行版的Postman,查看官网地址。 Newman可以使用Postman导出的collection文件直接在命令行运行,把Postman界面化运…...
MySQL:事务+@Transactional注解
事务 本章从了解为什么需要事务到讲述事务的四大特性和概念,最后讲述MySQL中的事务使用语法以及一些需要注意的性质。 再额外讲述一点Springboot中Transactional注解的使用。 1.为什么需要事务? 我们以用户转账为例,假设用户A和用户B的银行账…...
数字IC手撕代码--低功耗设计 Clock Gating
背景介绍芯片功耗组成中,有高达 40%甚至更多是由时钟树消耗掉的。这个结果的原因也很直观,因 为这些时钟树在系统中具有最高的切换频率,而且有很多时钟 buffer,而且为了最小化时钟 延时,它们通常具有很高的驱动强度。 …...
易基因|m6A RNA甲基化研究的数据挖掘思路:干货系列
大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。关于m6A甲基化研究思路(1)整体把握m6A甲基化图谱特征:m6A peak数量变化、m6A修饰基因数量变化、单个基因m6A peak数量分析、m6A peak在基因元件上的分布…...
【微信小程序】-- 页面配置(十八)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...
玩好 StarRocks,大厂 offer 接不完!|字节跳动、小红书、京东物流、唯品会、腾讯音乐要的就是你!
求职黄金季即将到来,你准备好迎接你的 dream offer 了吗?StarRocks 自创立以来,一直主张为用户创造极速统一的数据分析新范式,让数据驱动创新,而优秀的大数据人才对推动创新有着至关重要的作用。因此,我们推…...
C# IoC控制反转学习笔记
一、什么是IOC IoC-Invertion of Control,即控制反转,是一种程序设计思想。 先初步了解几个概念: 依赖(Dependency):就是有联系,表示一个类依赖于另一个类。 依赖倒置原则(DIP&a…...
Python解题 - CSDN周赛第33期
本期四道题全考过,题解在网上也都搜得到。。。没有想法,顺手水一份题解吧。 第一题:奇偶排序 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 输入描述:第一行输入整数n。(1<n<…...
Session攻击
Session攻击Session攻击简介主要攻击方式会话预测会话劫持中间人攻击会话固定Session攻击简介 Session对于Web应用是最重要的,也是最复杂的。对于Web应用程序来说,加强安全性的首要原则就是:不要信任来自客户端的数据,一定要进行数据验证以及…...
【Linux】Shell详解
😊😊作者简介😊😊 : 大家好,我是南瓜籽,一个在校大二学生,我将会持续分享Java相关知识。 🎉🎉个人主页🎉🎉 : 南瓜籽的主页…...
汉字找不同隐私协议
本隐私信息保护政策版本:2021 V1 一、重要提示 请您(以下亦称“用户”)在使用本平台App时仔细阅读本协议之全部条款,并确认您已完全理解本协议之规定,尤其是涉及您的重大权益及义务的加粗或划线条款。如您对协议有任…...
CEC2017:斑马优化算法(Zebra Optimization Algorithm,ZOA)求解cec2017(提供MATLAB代码)
一、斑马优化算法 斑马优化算法(Zebra Optimization Algorithm,ZOA)Eva Trojovsk等人于2022年提出,其模拟斑马的觅食和对捕食者攻击的防御行为。 斑马因身上有起保护作用的斑纹而得名。没有任何动物比斑马的皮毛更与众不同。斑…...
【Linux要笑着学】进程创建 | 进程终止 | slab分派器
爆笑教程《看表情包学Linux》👈 猛戳订阅!💭 写在前面:本章我们主要讲解进程的创建与终止。首先讲解进程创建,fork 函数是我们早在讲解 "进程的概念" 章节就提到过的一个函数&#…...
数据资产管理建设思考(二)
关于数据资产管理,近两年是数据治理行业中一个热点话题,当然有我们前面提到的国家的政策支持及方向指引的原因。另一方面我们做数据治理的同行们从学习吸收国外优秀的数据治理理论,进一步在实践中思考如何应用理论,并结合我们国家…...
微软发布多模态版ChatGPT!取名“宇宙一代”
文|CoCo酱Ludwig Wittgenstein曾说过:“我语言的局限,即是我世界的局限”。大型语言模型(LLM)已成功地作为各种自然语言任务的通用接口,只要我们能够将输入和输出转换为文本,就可以将基于LLM的接…...
【学习笔记】深入理解JVM之对象的实例化
参考尚硅谷JVM 102 - 106 集 首发地址:地址 1、JVM对象的实例化 1.1 对象的创建方式 对象有一下几种创建对象的方式 new Object object new Object();Class的newInstance() Object object Object.class.newInstance();Constructor的newInstance(…...
IP协议的漏洞及防护措施
文章目录一、TCP/IP协议族二、IP协议三、IP协议的安全问题及防护措施一、TCP/IP协议族 二、IP协议 网际协议(Internet Protocol,IP)是TCP/IP协议族的核心,也是网际层最重要的协议。 IP数据报由首部和数据两部分组成;…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...













