Docker学习笔记(十)搭建Docker私有仓库

一、环境配置

1、宿主机系统:macOS Sequoia(版本15.2)

2、虚拟机VMware Fusion版本:专业版 13.6.2 (24409261)

3、虚拟机系统:AlmaLinux-9-latest-x86_64-boot.iso

二、安装Harbor开源企业级Docker镜像

Harbor 是一个开源的企业级 Docker 镜像 仓库,提供了许多功能,包扩用户管理、访问控制、镜像复制和安全扫描;Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。

1、安装Harbor

1.1环境准备

1.1.1查看虚拟机IP命令:
ifconfig

1.1.2查看防火墙状态

防火墙操作比较好的文章:https://zhuanlan.zhihu.com/p/612481340

查看防火墙状态:
systemctl status firewalld
关闭防火墙:
systemctl stop firewalld
开启防火墙:
systemctl start firewalld
重新加载防火墙规则:
firewall-cmd --reload
1.1.3关闭内核安全机制,(这个在网上查看资料的时候有大神关闭了,但是我没关闭也成功了,暂且记录一下)
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0

1.2部署Docker和Docker Compose

1.2.1部署Docker
1.2.1.1卸载系统之前的Docker镜像,因我是新装的虚拟机什么都没安装,我直接执行,方法记录一下
# 安装前先更新yum,不然有可能出现本机无法连接虚拟机的mysql、redis等
sudo yum update
# 卸载系统之前的docker,以及 docker-cli
sudo yum remove docker-ce docker-ce-cli containerd.io
# 卸载系统之前的docker 
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

 

1.2.1.2安装必须的依赖
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

1.2.1.3设置 docker repo 的 yum 位置
# 配置镜像
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.2.1.4安装 docker,以及 docker-cli
sudo yum install -y docker-ce docker-ce-cli containerd.io

1.2.1.5配置 docker 加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

1.2.1.6启动 docker & 设置 docker 开机自启
systemctl enable docker

1.2.1.7查看docker版本
docker -v

1.2.2部署Docker-Compose服务

Harbor是需要Docker-Compose服务做支撑的

1.2.2.1下载最新Docker-Compose
# 下载阿里云docker-compose二进制文件
# curl -L https://mirrors.aliyun.com/docker-toolbox/linux/compose/1.21.2/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
# 下载github最新docker-compose版本
sudo curl -L "https://github.com/docker/compose/releases/download/v2.32.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 添加可执行权限
chmod +x /usr/local/bin/docker-compose

这里要注意:

第一次安装我也是安装的阿里的最新镜像,1.21.2,安装完毕,启动一直报错

ERROR: Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version (e.g "2.2" or "3.3") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.
For more on the Compose file format versions, see https://docs.docker.com/compose/compose-file/

这个问题就是因为版本问题导致的,把阿里的镜像换成github的再次下载docker-compose问题解决,卡了我一天

解决方案一: 

按照这种解决错误会变为,没有根本解决

1.2.2.2查看Docker-Compose版本
docker-compose -v

 1.3部署Harbor服务

官网地址:Releases · goharbor/harbor · GitHub

1.3.1下载并解压Harbor安装包,这里要文明上网!!!!,另外下载解压的时候要注意存放的文件位置
sudo wget https://github.com/goharbor/harbor/releases/download/v2.12.2/harbor-offline-installer-v2.12.2.tgz

sudo tar xvf harbor-offline-installer-v2.12.2.tgz

1.3.2配置Harbor参数文件

解压后,在目录下会生成一个harbor.yml.tmpl文件(复制harbor.yml.tmpl并重命名为harbor.yml)。修改harbor.yml

# 拷贝一份Harbor的配置文件
[root@localhost ~]# cp /usr/local/harbor/harbor.yml.tmpl /usr/local/harbor/harbor.yml
[root@localhost ~]# vim /usr/local/harbor/harbor.yml
# 修改hostname,修改为自己的IP地址
hostname: 192.168.119.133
# 将https段的内容全部注释,这里不使用https访问
#################################################################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################################################################# 对配置文件进行语法检查,将会自动拉取必要的镜像
[root@localhost ~]# /usr/local/harbor/prepare
1.3.3启动Harbor

在解压的目录下运行./install.sh脚本开始安装。安装过程中会检查环境、配置文件等,并下载所需的Docker镜像。

# 需要一点时间,等待安装回显结束即可
[root@localhost ~]# sh /usr/local/harbor/install.sh
 1.3.4查看Harbor启动镜像
docker-compose ps

1.3.5访问私有仓库

访问地址:虚拟机的地址,不用端口

用户名:zaiharbor.yml文件里有,默认:admin

密码:文件里有,默认:Harbor12345

 三、使用docker上传镜像到Harbor

3.1服务器本机上操作

3.1.1本机登录

# 使用 docker 进行登录和推送,在推送镜像之前要做一次登录
docker login -u admin -p Harbor12345 http://127.0.0.1

3.1.2本机拉取镜像

这里先描述一个问题,就是使用docker search mysql一直不通过各种配置,各种搜索问题依旧没有解决,暂时记录一下处理过程,哪位大神有思路一起交流

解决步骤:

1、修改ifcfg-enp0s3,我用的almalinux这个文件夹下没有这个文件,我手动配置,但是问题没解决

 cd /etc/sysconfig/network-scripts/vim ifcfg-enp0s3 加入DNS1=8.8.8.8

修改resolv.conf 

vim /etc/resolv.conf加入
nameserver 8.8.8.8

重启网络:问题没解决呀

# 使用这个命令会报错
systemctl restart network# 使用
systemctl restart NetworkManagersystemctl status NetworkManager

2、修改DNS

# 文件地址
sudo vim /etc/resolv.conf# 文件内容
; generated by /usr/sbin/dhclient-script
nameserver 114.114.114.114.
nameserver 8.8.8.8
options edns0 trust-ad
search localdomain

修改docker的daemon.json文件

# 文件位置
sudo vim /etc/docker/daemon.json# 文件内容
{"max-concurrent-downloads": 10,"max-concurrent-uploads": 5,"default-shm-size": "1G","debug": true,"experimental": false,"registry-mirrors": ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc"]
}# 修改完毕要重启
sudo systemctl daemon-reload
sudo systemctl restart docker

问题依旧,但是可以拉取镜像,哪位大神有经历可以帮忙看一下。先走下边的流程

3.1.3拉取镜像

[root@localhost ~]# docker pull mysql:5.6

3.1.4将镜像打标签

# push上传镜像必须要以,以下格式进行打标签
# 格式:私有仓库IP地址/项目名称/镜像标签
[root@localhost ~]# docker tag mysql:5.6 127.0.0.1/wj_demo/mysql:v1

3.1.5上传镜像到Harbor

docker push 127.0.0.1/wj_demo/mysql:v1

 3.2宿主机/其他客户端上传镜像到docker仓库服务器

在宿主机上配置镜像仓库地址

#在宿主机上查看docker安装位置
docker info

#在信息列表中找到.docker文件夹路径,进入.docker文件夹修改daemon.json文件 

添加insecure-registries信息,IP为虚拟机地址,80为harbor.yml文件中配置的端口

准备上传

1、登陆

docker login -u 用户名 -p 密码 IP:端口

2、打包

3、推送

4、宿主机拉取镜像

docker pull 172.16.156.128:80/wj_demo/mysql5.7:v1

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux中基本命令

目录 ls pwd cd touch mkdir rm cp mv cat less head tail find grep ls 其实大部分命令都是可执行的文件&#xff0c;但有一些命令比如Shell内置命令&#xff0c;它没有对应的独立可执行文件&#xff0c;而是由Shell直接解释执行的。 功能&#xff1a;显示当前目…

IDEA导入jar包后提示无法解析jar包中的类,比如无法解析符号 ‘log4j‘

IDEA导入jar包后提示无法解析jar包中的类 问题描述解决方法 问题描述 IDEA导入jar包的Maven坐标后&#xff0c;使用jar中的类比如log4j&#xff0c;仍然提示比如无法解析符号 log4j。 解决方法 在添加了依赖和配置文件后&#xff0c;确保刷新你的IDE项目和任何缓存&#xff…

字节跳动实习生主导开发强化学习算法,助力大语言模型性能突破

目录 禹棋赢的背景与成就 主要成就 DAPO算法的技术细节 算法优势 禹棋赢的研究历程 关键时间节点 字节跳动的“Top Seed人才计划” 计划特点 小编总结 在大模型时代&#xff0c;经验不再是唯一的衡量标准&#xff0c;好奇心、执行力和对新技术的敏锐洞察力成为推动技术…

Mysql表的简单操作

&#x1f3dd;️专栏&#xff1a;Mysql_猫咪-9527的博客-CSDN博客 &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 3.1 创建表 3.2 查看表结构 3.3 修改表 1. 添加字段 2. 修改字段 …

【一起学Rust | Tauri2.0框架】基于 Rust 与 Tauri 2.0 框架实现全局状态管理

前言 在现代应用程序开发中&#xff0c;状态管理是构建复杂且可维护应用的关键。随着应用程序规模的增长&#xff0c;组件之间共享和同步状态变得越来越具有挑战性。如果处理不当&#xff0c;状态管理可能会导致代码混乱、难以调试&#xff0c;并最终影响应用程序的性能和可扩…

大模型的微调技术(高效微调原理篇)

背景 公司有需求做农业方向的大模型应用以及Agent助手&#xff0c;那么适配农业数据就非常重要。但众所周知&#xff0c;大模型的全量微调对算力资源要求巨大&#xff0c;在现实的限制条件下基本“玩不起”&#xff0c;那么高效微调技术就非常必要。为了更好地对微调技术选型和…

Java 大视界 -- Java 大数据在智能家居设备联动与场景自动化中的应用(140)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

面试八股 —— Redis篇

重点&#xff1a;缓存 和 分布式锁 缓存&#xff08;穿透&#xff0c;击穿&#xff0c;雪崩&#xff09; 降级可作为系统的保底策略&#xff0c;适用于穿透&#xff0c;击穿&#xff0c;雪崩 1.缓存穿透 2.缓存击穿 3.缓存雪崩 缓存——双写一致性 1.强一致性业务&#xff08…

[网络安全] 滥用Azure内置Contributor角色横向移动至Azure VM

本文来源于团队的超辉老师&#xff0c;其系统分析了Azure RBAC角色模型及其在权限滥用场景下的攻击路径。通过利用AADInternals工具提升用户至Contributor角色&#xff0c;攻击者可在Azure VM中远程执行命令&#xff0c;创建后门账户&#xff0c;实现横向移动。文中详述了攻击步…

OO_Unit1

第一次作业 UML类图 代码复杂度分析 其中Expr中的toString方法认知复杂度比较高&#xff0c;主要源于多层条件嵌套和分散的字符串处理逻辑&#xff0c;重构时可重点关注这两部分的解耦。 代码量分析 1.”通用形式“ 我觉得我的设计的最大特点就是“通用形式”&#xff0c;具…

阿里云 AI 搜索产品荣获 Elastic Innovation Award 2024

阿里云AI搜索产品荣获Elastic Innovation Award 2024&#xff0c;该奖项于近日在新加坡ElasticON 2025的Elastic合作伙伴峰会上颁发&#xff0c;旨在表彰基于Elastic平台开发企业级生成式人工智能&#xff08;GenAI&#xff09;应用的顶尖合作伙伴&#xff0c;这些应用有效帮助…

网络原理之网络层、数据链路层

1. 网络层 1.1 IP协议 1.1.1 基本概念 主机: 配有IP地址,但是不进⾏路由控制的设备路由器: 即配有IP地址,⼜能进⾏路由控制节点: 主机和路由器的统称 1.1.2 协议头格式 说明&#xff1a; 4位版本号(version): 指定IP协议的版本,对于IPv4来说,就是4,对于IPv6来说,就是6 4位头…

炫酷的3D按钮效果实现 - CSS3高级特性应用

炫酷的3D按钮效果实现 - CSS3高级特性应用 这里写目录标题 炫酷的3D按钮效果实现 - CSS3高级特性应用项目介绍核心技术实现1. 基础结构设计2. 视觉效果实现2.1 背景渐变2.2 立体感营造 3. 交互动效设计3.1 悬停效果3.2 按压效果 技术要点分析1. 深度层次感2. 动画过渡3. 性能优…

Java定时任务的三重境界:从单机心跳到分布式协调

《Java定时任务的三重境界&#xff1a;从单机心跳到分布式协调》 本文将以生产级代码标准&#xff0c;揭秘Java定时任务从基础API到分布式调度的6种实现范式&#xff0c;深入剖析ScheduledThreadPoolExecutor与Quartz Scheduler的线程模型差异&#xff0c;并给出各方案的性能压…

鸿蒙Flutter开发故事:不,你不需要鸿蒙化

在华为牵头下&#xff0c;Flutter 鸿蒙化如火如荼进行&#xff0c;当第一次看到一份上百个插件的Excel 列表时&#xff0c;我也感到震惊&#xff0c;排名前 100 的插件赫然在列&#xff0c;这无疑是一次大规模的军团作战。 然后&#xff0c;参战团队鱼龙混杂&#xff0c;难免有…

PolyBench基准程序详解:编译器优化评测指标

PolyBench基准程序详解&#xff1a;编译器优化评测指标 PolyBench基本概念 PolyBench&#xff08;Polyhedral Benchmark&#xff09;是由UCLA&#xff08;加州大学洛杉矶分校&#xff09;的Louis-Nol Pouchet及其研究团队开发的基准测试套件&#xff0c;专门用于评估多面体编…

2025年渗透测试面试题总结-某四字大厂实习面试复盘 一面 二面 三面(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 一面 1. 数组和链表各自的优势和原因 2. 操作系统层面解析和进程 3. 线程和进程通信方式及数据安全问…

ruoyi-vue部署4

1.jdk-linux安装 2.tomcat-linux安装 3.ruoy后台部署 4.nginx-linux安装5.ruoyi前端部署​​​​​​​

查看visual studio的MSVC版本的方法

右键项目名称&#xff0c;下拉点击属性 然后点击库目录&#xff0c;下拉点击编辑 就可以看见msvc版本了

【Javascrip】Javascript练习01 REST API using Express.js.

针对该问题的项目路径 要求部分 what you need to doReview the tasks provided in the section below.Obtain the boilerplate code.Use your local development environment to implement a solution.Upload your solution for marking via Gradescope. There is no attempt…