您好,登录后才能下订单哦!
# 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。