Linux下如何配置容器镜像仓库?
Linux下3种主流容器镜像仓库配置指南
随着容器技术的普及,搭建私有镜像仓库已成为企业DevOps实践的标配。本文将详细介绍在Linux环境下配置Docker Registry、Harbor和Nexus三种主流容器镜像仓库的完整流程,并提供性能优化建议和安全配置方案。
一、准备工作
在开始配置前,请确保您的Linux系统满足以下要求:
- 操作系统:Ubuntu 20.04+/CentOS 7+
- Docker版本:20.10.0+
- 硬盘空间:至少50GB可用空间
- 内存:4GB以上(生产环境建议8GB+)
二、Docker官方Registry配置
1. 快速部署方案
# 拉取registry镜像
docker pull registry:2
# 启动registry容器
docker run -d -p 5000:5000 \
--restart=always \
--name registry \
-v /data/registry:/var/lib/registry \
registry:2
2. 高级安全配置
生产环境必须配置TLS和基础认证:
- 生成自签名证书:
- 创建认证文件:
- 启动带安全配置的registry:
openssl req -x509 -newkey rsa:4096 -nodes -sha256 \
-keyout /certs/domain.key -out /certs/domain.crt \
-days 365 -subj "/CN=yourdomain.com"
docker run --entrypoint htpasswd registry:2 \
-Bbn username password > /auth/htpasswd
docker run -d -p 5000:5000 \
--restart=always \
--name secured_registry \
-v /data/registry:/var/lib/registry \
-v /certs:/certs \
-v /auth:/auth \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
-e REGISTRY_AUTH=htpasswd \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-e REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm" \
registry:2
三、企业级方案:Harbor部署
1. 安装前准备
Harbor需要额外安装docker-compose:
# 下载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
# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
2. 离线安装Harbor
# 下载离线安装包
wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-offline-installer-v2.4.1.tgz
# 解压并配置
tar xvf harbor-offline-installer-*.tgz
cd harbor
cp harbor.yml.tmpl harbor.yml
3. 关键配置项
编辑harbor.yml需要特别注意:
- hostname: 设置访问域名
- https证书: 配置TLS证书路径
- 数据持久化: 默认使用本地目录/data
- admin密码: 修改默认Harbor12345密码
4. 启动与访问
# 执行安装脚本
./install.sh
# 访问Web界面
https://yourdomain.com
四、通用仓库方案:Nexus Repository
1. 安装Nexus3
# 创建专用用户
useradd -M -d /opt/nexus -s /bin/bash -r nexus
# 下载安装包
wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz
# 解压并配置
tar xvf latest-unix.tar.gz -C /opt
chown -R nexus:nexus /opt/nexus*
2. 配置Docker仓库
通过Web界面(默认端口8081)创建仓库:
- 创建Blob Store存储空间
- 新建"Docker(hosted)"类型仓库
- 配置HTTP/HTTPS访问端口
- 设置访问权限
3. 性能优化建议
- 调整JVM参数:编辑bin/nexus.vmoptions
- 配置反向代理:建议使用Nginx
- 定期清理策略:设置自动清理任务
五、仓库使用最佳实践
1. 客户端配置
对于非安全仓库,需要修改docker配置:
# 编辑/etc/docker/daemon.json
{
"insecure-registries" : ["myregistry:5000"]
}
# 重启docker服务
systemctl restart docker
2. 镜像操作命令
# 标记镜像
docker tag local-image:tag myregistry:5000/repo:tag
# 推送镜像
docker push myregistry:5000/repo:tag
# 拉取镜像
docker pull myregistry:5000/repo:tag
3. 维护技巧
- 定期执行垃圾回收:
docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml - 监控仓库存储使用情况
- 设置镜像保留策略
本文详细介绍了三种主流容器镜像仓库的配置方法,从简单的Docker Registry到功能完善的Harbor,再到通用的Nexus解决方案。实际部署时,建议根据团队规模和安全要求选择合适的方案。对于小型团队,Docker Registry简单易用;而中大型企业更推荐使用Harbor,它提供了完善的RBAC、漏洞扫描等企业级功能。
