# Linux下如何配置Docker的本地仓库 ## 目录 1. [本地仓库概述](#本地仓库概述) 2. [准备工作](#准备工作) 3. [安装Docker Registry](#安装docker-registry) 4. [配置TLS证书(可选)](#配置tls证书可选) 5. [启动Registry容器](#启动registry容器) 6. [客户端配置](#客户端配置) 7. [镜像推送与拉取](#镜像推送与拉取) 8. [高级配置](#高级配置) 9. [常见问题排查](#常见问题排查) 10. [总结](#总结) --- ## 本地仓库概述 Docker Registry是存储和分发Docker镜像的服务。搭建本地仓库的主要优势包括: - 加速内部开发流程 - 完全控制镜像存储 - 满足安全合规要求 - 离线环境可用 官方提供了`registry:2`镜像,本文将基于此演示配置过程。 --- ## 准备工作 ### 系统要求 - Linux服务器(本文以Ubuntu 22.04为例) - 已安装Docker Engine(版本20.10.0+) - 至少2GB可用磁盘空间 ### 环境检查 ```bash # 检查Docker版本 docker --version # 检查Docker服务状态 sudo systemctl status docker docker pull registry:2 mkdir -p /var/lib/registry 对于生产环境,建议配置HTTPS加密:
mkdir -p /certs && cd /certs openssl req -newkey rsa:4096 -nodes -sha256 \ -keyout domain.key -x509 -days 365 \ -out domain.crt 注意:Common Name需填写仓库域名或IP
# Ubuntu/Debian sudo cp domain.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates # CentOS/RHEL sudo cp domain.crt /etc/pki/ca-trust/source/anchors/ sudo update-ca-trust docker run -d \ -p 5000:5000 \ --name registry \ -v /var/lib/registry:/var/lib/registry \ -v /certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ registry:2 | 变量名 | 说明 |
|---|---|
REGISTRY_HTTP_ADDR | 监听地址 (默认:0.0.0.0:5000) |
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY | 存储路径 (默认:/var/lib/registry) |
REGISTRY_AUTH_HTPASSWD_REALM | 认证域 |
REGISTRY_AUTH_HTPASSWD_PATH | 密码文件路径 |
编辑/etc/docker/daemon.json:
{ "insecure-registries": ["myregistry:5000"], "registry-mirrors": [] } 重启Docker服务:
sudo systemctl restart docker curl -X GET https://myregistry:5000/v2/_catalog docker tag nginx:latest myregistry:5000/my-nginx:v1 docker push myregistry:5000/my-nginx:v1 docker pull myregistry:5000/my-nginx:v1 curl -X GET https://myregistry:5000/v2/_catalog # 创建密码文件 docker run --entrypoint htpasswd \ httpd:2 -Bbn username password > /auth/htpasswd # 启动带认证的Registry docker run -d \ -p 5000:5000 \ -v /auth:/auth \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \ registry:2 # 使用S3存储 docker run -d \ -e REGISTRY_STORAGE=s3 \ -e REGISTRY_STORAGE_S3_BUCKET=mybucket \ -e REGISTRY_STORAGE_S3_REGION=us-east-1 \ registry:2 docker run -d \ -e REGISTRY_STORAGE_DELETE_ENABLED=true \ registry:2 http: server gave HTTP response to HTTPS client 解决方案:正确配置insecure-registries或使用HTTPS
检查: - 密码文件权限 - 认证环境变量拼写 - Docker客户端登录状态
# 查看仓库占用空间 du -sh /var/lib/registry 本文详细介绍了在Linux环境下配置Docker本地仓库的完整流程,包括: 1. 基础Registry服务搭建 2. TLS安全配置 3. 身份验证实现 4. 高级存储配置 5. 常见问题解决方案
通过本地仓库,企业可以构建更安全、高效的容器化工作流程。建议定期备份/var/lib/registry目录,并监控仓库存储使用情况。
附录:官方文档参考
- Docker Registry配置文档
- 存储后端选项 “`
这篇文章包含了: 1. 清晰的Markdown结构 2. 分步骤的详细配置指南 3. 代码块和表格等格式元素 4. 安全建议和故障排查 5. 相关参考文档链接
您可以根据实际环境调整端口、路径等参数。如需扩展特定部分(如Kubernetes集成或性能优化),可以进一步补充内容。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。