做网站学什么语言,哈尔滨工程研究生招生信息网,标智客logo设计免费生成,广东省广州市白云区广云路11号文章目录 前言一、Harbor的安装第一步#xff1a;安装docker第二步#xff1a;安装docker-compose第三步#xff1a;安装Harbor 二、Harbor登录三、Harbor项目管理第一步#xff1a;创建项目第二步#xff1a;推送镜像 四、Harbor权限控制五、Harbor自动清理多余的镜像手动… 文章目录 前言一、Harbor的安装第一步安装docker第二步安装docker-compose第三步安装Harbor 二、Harbor登录三、Harbor项目管理第一步创建项目第二步推送镜像 四、Harbor权限控制五、Harbor自动清理多余的镜像手动清理自动清理 总结 前言
我们在使用docker时镜像下载会默认到dockerHub上去下载。我们也可以将自己的应用发布到dockerHub上但是dockerHub上都是公有镜像任何人都可以下载。dockerHub上普通用户只能创建一个私有项目创建多个是需要付费的。如果我们的项目需要私有化那么使用Harbor可以来完成而且Harbor是开源免费的。
关于如何将自己的项目打包成docker镜像并上传到dockerHub可以参照我的文章【maven插件docker-maven-plugin打包镜像并发布到dockerHub】
下面来介绍Harbor的安装和基本的操作使用。 一、Harbor的安装
首先的运行要依赖docker和docker-compose。如果已安装这两个组件可以直接到第三步
第一步安装docker
这里为了方便我整理一个脚本内容如下
Centos/Redhat/Oracle系列脚本
#!/bin/sh
echo 删除系统自带docker
yum remove -y docker \docker-client \docker-client-latest \docker-ce-cli \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engineecho 安装docker依赖
yum install -y yum-utils device-mapper-persistent-data lvm2echo 配置阿里云docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoecho 安装最新docker
yum install -y docker-ceecho docker开机启动
systemctl enable dockerecho 启动docker
systemctl start dockerecho docker国内源替换(可选)
echo -e {registry-mirrors: [https://dockerhub.azk8s.cn,https://reg-mirror.qiniu.com,https://registry.docker-cn.com],exec-opts: [native.cgroupdriversystemd]} /etc/docker/daemon.jsonecho 重新加载docker配置文件
systemctl daemon-reloadecho 重启docker
systemctl restart dockerUbuntu/Debian系列安装脚本
#!/bin/sh
echo 删除系统自带docker
sudo apt-get remove -y docker \docker-client \docker-client-latest \docker-ce-cli \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine
echo 更新 apt-get
sudo apt-get updateecho 安装docker依赖
sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common -yecho 添加key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -echo 添加库下载地址
sudo add-apt-repository \deb [archamd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stableecho 安装最新docker
sudo apt-get install docker.io -yecho docker开机启动
sudo systemctl enable dockerecho 启动docker
sudo systemctl start dockerecho docker国内源替换(可选)
sudo echo -e {registry-mirrors: [https://dockerhub.azk8s.cn,https://reg-mirror.qiniu.com,https://registry.docker-cn.com],exec-opts: [native.cgroupdriversystemd]} /etc/docker/daemon.jsonecho 重新加载docker配置文件
sudo systemctl daemon-reloadecho 重启docker
sudo systemctl restart docker第二步安装docker-compose
sudo 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 x /usr/local/bin/docker-compose第三步安装Harbor
Harbor官网地址点击这里查看releases列表我们选择最新的v2.10.0 Latest 这里有离线版本和在线版本如果你服务器网络不错可以选择在线版本这里我们选择离线版本。
快捷下载地址
离线版本
在线版本
下载完成后并上传到服务器。
解压
tar -xzvf harbor-offline-installer-v2.10.0.tgz设置安装目录这里我们安装到/usr/local目录下
mv harbor /usr/local/进入目录
cd /usr/local/harbor/查看文件 ls
common.sh harbor.v2.10.0.tar.gz harbor.yml.tmpl install.sh LICENSE prepare复制配置文件
cp harbor.yml.tmpl harbor.yml修改配置文件
vim harbor.yml修改hostname。这里我们改成IPhostname: 192.168.101.170修改http.端口这里我们改成2280。http.port: 2280注释掉HTTPS的配置如果要使用可以使用另外的NGINX来替代。修改管理员密码默认值harbor_admin_password: Harbor12345修改docker挂载目录这里根据需要来修改。data_volume: /harbordata
然后运行prepare
./prepare运行完毕后执行安装
./install.sh如果有如下信息输出表示安装成功并启动
[] Running 9/10⠼ Network harbor_harbor Created 3.5s ✔ Container harbor-log Started 0.7s ✔ Container redis Started 1.2s ✔ Container harbor-db Started 1.4s ✔ Container registryctl Started 1.5s ✔ Container harbor-portal Started 1.3s ✔ Container registry Started 1.5s ✔ Container harbor-core Started 2.6s ✔ Container nginx Started 3.1s ✔ Container harbor-jobservice Started 3.0s
✔ ----Harbor has been installed and started successfully.----使用docker检查
docker ps二、Harbor登录
安装成功后我们便可以访问上面我们监听的端口是2280所以使用http://ip:2280直接访问 默认管理员admin 默认密码harbor_admin_password配置Harbor12345
登录后可以进行一些偏好设置如修改主题修改密码等操作
三、Harbor项目管理
Harbor以项目为单位来管理镜像一个项目可以包含多个镜像下面我们来演示创建一个项目并推送镜像
第一步创建项目
我们创建一个libs的项目我们可以把一些常用的固定版本的公共镜像放进去方便我们使用。
这个项目默认是私有的点击项目可以查看操作详情
第二步推送镜像
这里我们找一个redis的镜像推送到我们的私有库。
docker pull redis:5.0.7然后根据下面的命令进行重新命名
docker tag SOURCE_IMAGE[:TAG] 8.137.81.52:2280/libs/REPOSITORY[:TAG]SOURCE_IMAGE[:TAG] 表示源镜像 REPOSITORY[:TAG] 表示推送后的镜像 我们使用如下命令
docker tag redis:5.0.7 8.137.81.52:2280/libs/myredis:5.0.7登录harbor
docker login http://8.137.81.52:2280输入用户名admin和密码发现会报错误
Error response from daemon: Get https://8.137.81.52:2280/v2/: http: server gave HTTP response to HTTPS client意思是本来是http的协议结果客户端需要时HTTPS的返回。如果要添加docker登录HTTP协议需要修改docker配置
vim /etc/docker/daemon.json在配置中加入
insecure-registries: [http://8.137.81.52:2280]重启docker生效
systemctl daemon-reload systemctl restart docker然后在登录运行结果如下
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded登录成功
推送到Harbor仓库
docker push 8.137.81.52:2280/libs/myredis:5.0.7查看结果 说明已经成功推送到harbor了
四、Harbor权限控制
在上面的示例中我们使用admin我们可以专门来创建一些用户来进行不同的管理
这里我们创建一个test用户
然后回到项目点击项目详情
点击添加用户
选择不同的角色
项目管理员 项目的最高权限拥有项目的一切操作维护人员 扫描镜像、查看复制作业以及删除镜像的能力开发者 拥有项目的读写权限访客 只读权限。可以拉取和重新标记镜像但不能推送。受限访客 不完全读取权限。可以拉取镜像但不能推送看不到日志或项目的其他成员。
上面我们创建一个test用户并设置为受限访客下面我们来测试这个用户的使用。
回到我们自己的电脑然后再登录docker
我们先不登录直接拉取镜像
docker pull 8.137.81.52:2280/libs/myredis:5.0.7这样会返回如下错误
Error response from daemon: unauthorized: unauthorized to access repository: libs/myredis, action: pull: unauthorized to access repository: libs/myredis, action: pull说明需要登录才能拉取我们的镜像
下面我们使用test用户登录
docker login http://8.137.81.52:2280如果还是报Error response from daemon: Get “https://8.137.81.52:2280/v2/”:的错误请修改我们本地的docker配置 这时我们要输入test用户 然后我们pull刚才的镜像
docker pull 8.137.81.52:2280/libs/myredis:5.0.7结果 拉取成功
五、Harbor自动清理多余的镜像
我们在平常的开发中可能会生成很多版本的镜像如果是Java程序每个镜像一般都是几百M需要的硬盘资源很大特别是在开发环境下版本迭代非常快时间久了一些很早的版本就完全没用了直接清理掉以释放硬盘资源。
手动清理
这种方式需要人工“智能”手动去筛选需要清理的无用镜像操作如下所示
自动清理
在项目中使用策略来控制 添加规则
上面我们只保留最近推送的5个版本的镜像还可以进行匹配操作大家可以根据自身情况进行配置。 添加定时任务来执行这样就可以保证会自动清理掉那些不需要的镜像文件。 总结
Harbor作为docker私有镜像库来使用还是不错的而且运行时内存和CPU的占用都还能过得去当然也还可以对Harbor的组件进行优化处理比如使用外部的数据库和Redis这样还能减少资源的占用大家可以自行研究。