您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Linux中如何搭建Docker私有仓库
## 前言
在容器化技术日益普及的今天,Docker已成为开发者和运维人员的必备工具。虽然Docker Hub提供了丰富的公共镜像资源,但在企业级场景中,出于安全性、网络性能和定制化需求,搭建私有Docker仓库(Registry)显得尤为重要。本文将详细介绍在Linux系统上搭建Docker私有仓库的全过程。
---
## 一、私有仓库概述
### 1.1 什么是Docker私有仓库
Docker私有仓库是一个存储和分发Docker镜像的专用服务器,类似于Docker Hub但完全由用户自主控制。它允许您:
- 存储专有镜像
- 控制访问权限
- 减少对公共网络的依赖
- 加速CI/CD流程
### 1.2 核心组件
- **Registry**: Docker官方提供的开源仓库软件
- **Docker客户端**: 用于与仓库交互的工具
- **存储后端**: 通常使用本地文件系统或云存储
---
## 二、环境准备
### 2.1 系统要求
- Linux服务器(本文以Ubuntu 22.04为例)
- Docker CE 20.10.0+
- 至少2GB可用磁盘空间
- 开放5000端口(或自定义端口)
### 2.2 安装Docker
```bash
# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
# 安装依赖
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
# 添加Docker官方GPG密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装Docker引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 验证安装
sudo docker run hello-world
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
-v /var/lib/registry:/var/lib/registry \
registry:2
# 拉取测试镜像
docker pull ubuntu:20.04
# 标记镜像指向私有仓库
docker tag ubuntu:20.04 localhost:5000/my-ubuntu
# 推送镜像
docker push localhost:5000/my-ubuntu
# 删除本地镜像后重新拉取
docker image rm localhost:5000/my-ubuntu
docker pull localhost:5000/my-ubuntu
mkdir -p certs
openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
-x509 -days 365 -out certs/domain.crt \
-subj "/CN=myregistry.example.com"
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
-v $(pwd)/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
-v /var/lib/registry:/var/lib/registry \
registry:2
mkdir auth
docker run --entrypoint htpasswd \
httpd:2 -Bbn username password > auth/htpasswd
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
-v $(pwd)/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v /var/lib/registry:/var/lib/registry \
registry:2
docker login myregistry.example.com:5000
version: '3'
services:
registry:
image: registry:2
ports:
- "5000:5000"
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
volumes:
- ./data:/var/lib/registry
- ./auth:/auth
- ./certs:/certs
docker-compose up -d
curl -X GET https://myregistry.example.com:5000/v2/_catalog
# 修改配置启用删除
environment:
REGISTRY_STORAGE_DELETE_ENABLED: "true"
# 获取镜像digest
DIGEST=$(curl -I -H "Accept: application/vnd.docker.distribution.manifest.v2+json" \
http://localhost:5000/v2/my-ubuntu/manifests/latest | grep Digest | awk '{print $2}')
# 删除镜像
curl -X DELETE http://localhost:5000/v2/my-ubuntu/manifests/$DIGEST
docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml
Harbor是VMware开源的企业级Registry服务,提供: - 基于角色的访问控制 - 镜像漏洞扫描 - 图形化管理界面 - 日志审计
# 下载安装包
wget https://github.com/goharbor/harbor/releases/download/v2.6.0/harbor-offline-installer-v2.6.0.tgz
# 解压并配置
tar xvf harbor-offline-installer-v2.6.0.tgz
cd harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml # 修改hostname和admin密码
# 安装
./install.sh
解决方法:
# 对于Linux客户端
sudo mkdir -p /etc/docker/certs.d/myregistry.example.com:5000
sudo cp certs/domain.crt /etc/docker/certs.d/myregistry.example.com:5000/ca.crt
sudo systemctl restart docker
建议方案: - 定期清理无用镜像 - 配置外部存储(如S3、Azure Blob等) - 设置存储配额
搭建Docker私有仓库是企业容器化实践的重要一步。通过本文介绍的基础搭建到高级配置,您可以根据实际需求构建安全可靠的镜像分发体系。随着业务规模扩大,建议考虑Harbor等企业级解决方案以获得更完善的功能支持。
”`
(注:实际字数约2800字,可根据需要调整具体章节的详细程度)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。