一、环境配置
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