搭建 Docker 镜像中转站与私人镜像仓库
一、为啥要自己搭
宝子们,在咱们国内用 Docker,那真的是一把辛酸泪啊!每次想从官方镜像仓库拉个镜像,那速度简直龟速,有时候甚至根本连不上,就好像在跟一个信号极差的朋友打电话,说两句话就断了,急死人!以前国内还有些好用的镜像源,像阿里云、网易云的,结果不知道为啥,说关就关了,一下子就把咱的 "捷径" 给断了。后来去找那些第三方镜像源,本以为能救个急,结果它们就像 "调皮鬼",三天两头出问题,不是更新不及时,就是突然访问不了,真的让人抓狂!
所以啊,咱们干脆自己动手,丰衣足食,搭建一个属于自己的镜像中转站和私人镜像仓库,把命运掌握在自己手里,再也不用看别人脸色啦!
二、Harbor 强大功能揭秘
(一)镜像复制与自动检测复制
Harbor 提供了极为实用的镜像复制功能。想象一下,你在一个公共镜像仓库中发现了一个非常适合项目使用的基础镜像,但直接从公共仓库拉取到本地环境不仅速度慢,还可能面临网络不稳定的问题。这时候,Harbor 就派上用场啦!你只需在 Harbor 管理界面中简单配置,指定源镜像地址和目标仓库位置,就可以轻松将公共镜像复制到自己的私人镜像仓库中。
更厉害的是,Harbor 还能自动检测镜像更新情况。当源镜像有新的版本发布时,Harbor 会敏锐地捕捉到这一变化,并根据预设的规则自动进行复制更新操作。这意味着你的私人镜像仓库始终能保持与源镜像的同步,无需手动频繁检查和更新,大大节省了时间和精力,确保你的开发和部署环境始终基于最新、最稳定的镜像版本。
(二)镜像分布式分发
在大型企业或分布式团队的开发场景中,不同地区的团队成员可能需要使用相同的镜像。Harbor 的镜像分布式分发功能就完美地解决了这一难题。它可以将镜像智能地分发到多个地理位置的节点上。例如,你在总部有一个主镜像仓库,在各个分公司或不同数据中心有多个子节点。通过 Harbor 的分布式分发机制,镜像可以快速、高效地从主仓库同步到各个子节点,每个子节点的团队成员都能从本地快速获取所需镜像,避免了因跨地区网络传输导致的速度瓶颈和不稳定因素,极大地提升了团队协作效率和镜像使用的便捷性 。
三、准备工作不能少
(一)找个 "国外小伙伴"------ 服务器
首先呢,咱们得找一台国外的服务器,就像找一个靠谱的小伙伴。这服务器的配置也不用太夸张,要是你只是个小团队,搞个 2 核 CPU、4GB 内存、50GB 硬盘的云服务器就差不多啦,性价比超高!要是你是个大公司,那可能就需要更厉害的配置,8 核以上 CPU、16GB 以上内存、500GB 以上硬盘,这样才能 hold 住大场面。
(二)给服务器 "穿衣服"------ 安装 Docker
有了服务器,接下来就得给它 "穿" 上 Docker 这件 "衣服"。以 Ubuntu 系统为例哈,步骤如下:
- 先更新一下系统软件包列表,就像给手机软件更新一样,让它保持最新状态:
sudo apt update
- 安装一些依赖包,这些包就像是搭建房子的砖块,少了可不行:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
- 给服务器添加 Docker 官方的 GPG 密钥,就像给房子上把锁,保证安全:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 再添加一下 Docker 软件源,这样服务器就能找到 Docker 啦:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- 再次更新一下软件包列表,确认一下 "装备" 都齐了没:
sudo apt update
- 最后,安装 Docker,见证奇迹的时刻到啦:
sudo apt install docker-ce docker-ce-cli containerd.io
- 安装完了,还得验证一下 Docker 是不是真的 "住" 进服务器里了:
sudo docker run hello-world
要是看到 "Hello from Docker!" 这句话,那就说明 Docker 安装成功啦,撒花!
(三)把 Harbor "请回家"------ 下载安装包
Harbor 可是我们搭建私人镜像仓库的好帮手,我们要从它的官方 GitHub 仓库(https://github.com/goharbor/harbor/releases)把它 "请回家"。下载的时候,要根据服务器的操作系统和硬件架构来选合适的版本,就像买衣服要选对尺码一样。下载好后,把安装包上传到服务器的指定目录,准备开启下一步啦!
四、搭建私人镜像仓库 ------Harbor 登场
(一)解压 Harbor 安装包
在服务器上找到刚刚上传的 Harbor 安装包,把它解压到指定目录,比如/opt/harbor目录下,就像拆快递一样简单:
sudo tar -xf harbor-offline-installer-*.tgz -C /opt/
(二)修改配置文件
进入 Harbor 解压目录,编辑harbor.yml配置文件,这里面的配置可重要啦!
- 设置访问 IP 和端口:把 Harbor 的访问 IP 设置成服务器的公网 IP,端口嘛,默认是 80,要是 80 端口被占用了,就像家里的停车位被别人占了,那就换个别的端口,比如 8080。像这样设置:
hostname: your_server_public_iphttp: port: 8080
- 设置认证信息:给自己设置一个管理员账号和密码,这可是进入 Harbor 管理界面的 "钥匙" 哦,比如:
harbor_admin_password: YourPassword123
- 设置数据存储路径:指定一个地方来存放镜像数据,这个地方得有足够的空间,就像找个大仓库放东西一样,比如:
data_volume: /data/harbor
(三)执行安装脚本
配置好之后,就可以在 Harbor 解压目录下执行安装脚本啦,就像按下启动按钮:
sudo./install.sh
安装过程中,脚本会自动去下载所需的依赖包,然后进行各种配置和初始化工作。等安装完成,Harbor 服务就会自动启动啦,是不是很神奇!
(四)验证与访问
- 验证服务状态:用docker-compose ps命令来看看 Harbor 相关容器的运行状态,就像检查一下家里的电器有没有正常工作。要是所有容器都显示 "Up",那就说明 Harbor 安装成功啦!比如:
sudo docker-compose ps
输出结果大概是这样的:
Name Command State Ports------------------------------------------------------------------------------------------------harbor-core /harbor/start.sh Upharbor-db /docker-entrypoint.sh postgres Up 5432/tcpharbor-jobservice /harbor/start.sh Upharbor-portal nginx -g daemon off; Up 8080/tcpharbor-registry /entrypoint.sh /etc/registry.... Up 5000/tcpharbor-ui /harbor/start.sh Up
访问管理界面:打开浏览器,输入http://your_server_public_ip:8080(要是修改了端口,就用修改后的端口),然后输入之前设置的管理员账号和密码,就能进入 Harbor 管理界面啦!在这里,你可以对镜像进行上传、下载、删除,还能管理用户和权限,可方便啦!
五、搭建镜像中转站 ------crproxy 来帮忙
(一)选个好帮手 ------crproxy
我们可以选 crproxy 来当我们的镜像代理服务,它就像一个勤劳的小蜜蜂,帮我们在网络畅通的服务器上运行,实现对各大镜像仓库的镜像代理。有了它,我们下次拉取镜像就快多啦!
(二)部署 crproxy
- 拉取代码:在国外服务器上执行下面的命令,把 crproxy 的代码拉取下来:
git clone https://github.com/wzshiming/crproxy.gitcd crproxy/examples/default
- 修改网关域名:用vim编辑start.sh文件,把第五行的gateway变量值改成服务器的公网域名(要是没有域名,用公网 IP 也行,就是没那么好记啦)。比如:
vim start.sh
把gateway="your_domain.com"改成你自己的域名或 IP。
3. 启动服务:执行start.sh脚本,启动 crproxy 服务,就像给小蜜蜂下命令:
./start.sh
- 拉取镜像示例:假设你的域名为your_domain.com,拉取k8s.gcr.io/coredns/coredns镜像的时候,就可以这样:
docker pull your_domain.com/k8s.gcr.io/coredns/coredns:v1.8.6
- 设置别名:要是你想用前缀替换的方式拉取镜像,那就执行setup-alias.sh脚本,然后给别名申请个证书(这一步看你自己需不需要啦)。比如:
./setup-alias.sh docker.your_domain.com docker.io your_domain.com
六、使用与维护 ------ 日常小妙招
(一)镜像上传与下载
- 上传镜像:在本地开发环境中,把开发好的镜像标记成私人镜像仓库的地址,然后用docker push命令把它推送到私人镜像仓库,就像把东西寄到自己的仓库:
docker tag your_image:tag your_server_public_ip:8080/your_project/your_image:tagdocker push your_server_public_ip:8080/your_project/your_image:tag
- 下载镜像:在需要使用镜像的地方,用docker pull命令从私人镜像仓库或镜像中转站下载镜像。要是从镜像中转站下载,就按照之前设置的代理规则来;要是从私人镜像仓库下载,就用下面这个命令:
docker pull your_server_public_ip:8080/your_project/your_image:tag
(二)仓库管理
- 用户管理:在 Harbor 管理界面里,你可以像个 "管理员" 一样,添加、删除用户,还能设置用户的角色和权限。比如,给普通用户只开放下载镜像的权限,给管理员用户所有权限,这样就能管理得井井有条啦!
- 镜像管理:可以对仓库里的镜像进行删除、版本管理这些操作。定期清理一下那些不用的镜像,给仓库腾点空间;对重要的镜像做好版本标记,以后要是需要回滚或者管理,就很方便啦!
(三)安全维护
- 数据备份:定期给私人镜像仓库的数据做个备份,就像给重要文件多存一份,防止数据丢失。可以用rsync这样的工具,把镜像数据备份到其他存储设备或者云存储里。
- 安全更新:要及时更新 Harbor 和 Docker 的版本,就像给手机软件更新一样,修复那些可能存在的安全漏洞。多关注官方发布的安全公告,按照提示更新就行啦!
七、总结 ------ 大功告成
好啦,宝子们,通过上面这些步骤,我们就成功搭建了自己的镜像中转站和私人镜像仓库,再也不用为镜像获取和管理的问题发愁啦!在搭建和使用的过程中,大家可以根据自己的需求和服务器资源,灵活调整配置,多多摸索,肯定能越来越熟练!相信以后随着容器技术的发展,咱们这种自己管理镜像的方式会越来越受欢迎哒!
本文由 admin 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。