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

news2024/11/26 18:21:56
  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需要更该

        (六)访问

         

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/384601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业级分布式数据库 - GaussDB介绍

目录 什么是GaussDB 简介 应用场景 产品架构 产品优势 安全 责任共担 身份认证与访问控制 数据保护技术 审计与日志 ​​​​​​​监控安全风险 ​​​​​​​故障恢复 ​​​​​​​认证证书 GaussDB与其他服务的关系 约束与限制 计费模式 什么是GaussDB …

如何在openKylin操作系统上搭建Qt开发环境

一、获取linux系统下的Qt安装包 Qt官网下载地址&#xff1a;https://download.qt.io 国内镜像下载地址&#xff1a;https://mirrors.cloud.tencent.com/qt/ 。建议用镜像下载速度快。集成安装包在 official_releases/qt 目录下&#xff0c;新地址&#xff1a;https://downloa…

避免重启应用,10倍提升本地研发效率

谁在消耗我们的开发时间&#xff1f; 修改一点代码要重启项目&#xff0c;每次都要浪费很多时间进行方法调试时&#xff0c;要么需要Http请求&#xff0c;要么写个单元测试&#xff0c;非常烦 思考&#xff1a;有没有可能实现热部署随意测试任何一个方法&#xff1f; 热部署 …

开源计划 - 用海量设备汇聚成一台巨型处理器的开源项目

巨型处理器特性1. 由各种能够联网的普通智能设备组成2. 模拟硬件3. 存储器即处理器4. 数据处理的匿名化在2016年的时候&#xff0c;曾经设想过一种处理器。运行在海量的浏览器之上&#xff0c;可用于处理大规模的GPS地理定位距离的运算。后来开始逐渐做了新的延伸&#xff0c;打…

SpringCloud之服务拆分和实现远程调用案例

服务拆分对单体架构项目来说&#xff1a;简单方便&#xff0c;高度耦合&#xff0c;扩展性差&#xff0c;适合小型项目。而对于分布式架构来说&#xff1a;低耦合&#xff0c;扩展性好&#xff0c;但架构复杂&#xff0c;难度大。微服务就是一种良好的分布式架构方案&#xff1…

Git-学习笔记01【Git简介及安装使用】

Java后端 学习路线 笔记汇总表【黑马-传智播客】Git-学习笔记01【Git简介及安装使用】Git-学习笔记02【Git连接远程仓库】Git-学习笔记03【Git分支】目录 01-git的历史 02-git和svn的对比 03-git的安装 04-向本地仓库中添加文件 05-修改文件内容并提交 06-删除本地仓库中…

SpringCloud全家桶— — 【1】eureka、ribbon、nacos、feign、gateway

SpringCloud全家桶— — 组件搭建 1 Eureka 1.1 Eureka-server 创建eureka-server的SpringBoot项目 ①导入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId…

【Python实战】2023关键词是小孩儿?某歌结婚生女一步到位,Hu歌官宣已婚产女后的W博,笑死哈哈哈哈(爬虫+数据可视化)

前言 办公室里很多喜欢Hu歌的小姑娘&#xff0c;听说他结婚了&#xff0c;而且孩子都生了&#xff0c;都非常惊讶。 就是我也是今天才知道的&#xff0c;哈哈哈哈&#xff08;交通闭塞了些&#xff09;&#x1f602;&#x1f602;。 所有文章完整的素材源码都在&#x1f447;…

Java常见知识点汇总

Java常见知识点汇总基础概念与常识1.Java 语言有哪些特点?2.JVM vs JDK vs JRE3.什么是字节码?采用字节码的好处是什么?4.为什么不全部使用 AOT 呢&#xff1f;5.为什么说 Java 语言“编译与解释并存”&#xff1f;6.Oracle JDK vs OpenJDK7.Java 和 C 的区别?基本语法1.注…

codeforces周赛div3#855记录

目录 总结 一&#xff0c;A. Is It a Cat? 二&#xff0c;B. Count the Number of Pairs 三&#xff0c;C1. Powering the Hero (easy version) 四&#xff0c;C2. Powering the Hero (hard version) 总结 真羡慕ACM校队的同学&#xff0c;能AC七八题&#xff0c;甚至ak …

飞天云动,站在下一个商业时代的门口

ChatGPT的爆火让AIGC再度成为热词&#xff0c;随之而来的是对其商业化的畅想——不是ChatGPT自身如何盈利&#xff0c;而是它乃至整个AIGC能给现在的商业环境带来多大改变。 这不由得令人想起另一个同样旨在改变世界的概念&#xff0c;元宇宙。不同的是&#xff0c;元宇宙更侧…

Apache Flink 1.16 功能解读

摘要&#xff1a;本文整理自阿里云高级开发工程师 Apache Flink Committer、Flink 1.16 Release Manager 黄兴勃&#xff08;断尘&#xff09;&#xff0c;在 FFA 2022 核心技术专场的分享。本篇内容主要分为四个部分&#xff1a;综述持续领先的流处理更稳定易用高性能的批处理…

传输线的物理基础(一):地、信号和均匀传输线

我们每天都听到用到传输线&#xff0c;那么什么是传输线呢&#xff1f;一条同轴线缆是传输线&#xff0c;多层PCB板中带参考平面的PCB走线是传输线&#xff0c;我们可以理解为&#xff0c;传输线由任意两个具有长度的导体组成。接下来我们会看到&#xff0c;一条传输线用来将信…

想象力训练

一、课程目的1、了解想象力2、想象力训练二、静态想象法常用在单一图片上&#xff0c;比如一辆自行车要点1、形象鲜明 (大脑中生动的展现它的样子)2、放大:一点点放大它(后续的课程讲解经常用到放大这个方法)3、缩小:一点一点缩小它4、变多:一个变两个&#xff0c;两个变三个&a…

C++---数字三角形模型---传纸条(每日一道算法2023.2.26)

注意事项&#xff1a; 本题dp思路与 “线性dp–方格取数” 一致&#xff0c;下方思路仅证明为什么使用方格取数的思路是正确的。 题目&#xff1a; 小渊和小轩是好朋友也是同班同学&#xff0c;他们在一起总有谈不完的话题。 一次素质拓展活动中&#xff0c;班上同学安排坐成…

安卓开发调试使用 Charles抓包Https请求

1、Windows电脑安装证书Help->SSL Proxying -> Install Charles Root Certificate2、手机安装证书证书保存到电脑上.crt结尾的文件Help->SSL Proxying -> Save Charles Root Certificate2.复制到手机上 3.安装证书以红米手机为例打开手机设置-->密码与安全-->…

php宝塔搭建部署实战多模板cms管理系统源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套php开发的多模板cms管理系统源码。感兴趣的朋友可以自行下载学习。 技术架构 PHP7.0 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&#xff0c;宝塔添加一…

在软件开发中如何将看板方法与 Scrum 集合使用?

什么是看板和 Scrum 的混合模式&#xff1f;适合在哪些场景使用&#xff1f;有哪些成功的案例可参考&#xff1f;本文将围绕以上问题展开。敏捷实践是一个团队过程&#xff0c;选择适合团队的敏捷框架时并没有什么技巧&#xff0c;无论您是使用看板方法、Scrum 还是两者的组合&…

【C++】vector的模拟实现(SGI版本)

吃不了自律的苦&#xff0c;又接受不了平庸的罪。想让自己变好&#xff0c;但又想舒服些。 你啊你……要么就不要去想&#xff0c;想了又不去做&#xff0c;犹犹豫豫&#xff0c;徘徊不前&#xff0c;患得患失… 文章目录一、四种构造函数1.vector的框架和无参构造2.构造函数调…

为什么FPGA在深度学习领域有着得天独厚的优势?

01 FPGA在深度学习领域有哪些优势 FPGA&#xff08;Field-Programmable Gate Array&#xff09;是一种灵活的可编程硬件设备&#xff0c;它在深度学习应用领域中具有许多优势。 首先&#xff0c;FPGA具有非常高的并行性。在深度学习中&#xff0c;许多计算都可以并行化&…