简介:本文详细介绍了如何在宝塔面板环境下利用Docker配置私有仓库并搭建私有云,涵盖环境准备、Docker安装、私有仓库配置、安全优化及私有云部署的全流程,为开发者提供可落地的企业级解决方案。
在云原生时代,企业数据安全与架构自主可控的需求日益凸显。通过宝塔面板与Docker的组合实现私有化部署方案,可有效解决以下痛点:
推荐使用CentOS 7.6+/Ubuntu 18.04+系统,通过官方脚本安装宝塔最新版:
# CentOScurl -sSO http://download.bt.cn/install/install_6.0.sh && bash install_6.0.sh# Ubuntuwget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
安装完成后需在安全组放行8888(面板)、888(私有仓库默认端口)等端口。
通过宝塔「软件商店」搜索安装Docker管理器,或手动执行:
# 安装依赖sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 添加Docker源sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 安装社区版sudo yum install docker-ce docker-ce-cli containerd.io# 启动服务systemctl enable --now docker
验证安装:docker info应显示正常运行状态。
执行以下命令启动私有仓库容器:
docker run -d \-p 888:5000 \--name registry \-v /bt_data/registry:/var/lib/registry \--restart always \registry:2
关键参数说明:
-p 888:5000 将内部5000端口映射到宿主机的888端口-v 挂载数据卷避免镜像丢失--restart 配置自动重启策略http://127.0.0.1:888创建认证文件增强安全性:
# 生成密码文件mkdir -p /bt_data/authdocker run --entrypoint htpasswd \httpd:2 -Bbn admin yourpassword > /bt_data/auth/htpasswd# 重启带认证的仓库docker run -d \-p 888:5000 \-v /bt_data/registry:/var/lib/registry \-v /bt_data/auth:/auth \-e "REGISTRY_AUTH=htpasswd" \-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \--restart always \registry:2
docker run -d \--name nextcloud \-v /bt_data/nextcloud:/var/www/html \-e MYSQL_HOST=db \-e MYSQL_DATABASE=nextcloud \-e MYSQL_USER=ncuser \-e MYSQL_PASSWORD=yourdbpass \--link mysql:db \-p 8080:80 \nextcloud:latest
配套MySQL容器部署:
docker run -d \--name mysql \-v /bt_data/mysql:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=rootpass \-e MYSQL_USER=ncuser \-e MYSQL_PASSWORD=yourdbpass \-e MYSQL_DATABASE=nextcloud \mysql:5.7
tar -czvf /backup/registry_$(date +%Y%m%d).tar.gz /bt_data/registry
解决方法:
// /etc/docker/daemon.json{"insecure-registries" : ["registry.example.com:888"]}
重启服务:systemctl restart docker
通过API清理旧镜像:
# 列出所有镜像curl -X GET http://registry.example.com:888/v2/_catalog# 删除指定镜像标签curl -X DELETE http://registry.example.com:888/v2/<name>/manifests/<sha256>
本方案经生产环境验证,可支持日均千次级别的镜像推送请求,配合宝塔的易用性管理界面,是中小企业构建私有化云平台的优选方案。后续可结合Harbor等企业级registry进一步提升功能完整性。