Docker私有部署指南

一、Docker私有部署概述

Docker私有部署指的是在企业内网或私有环境中搭建Docker镜像仓库,用于存储和管理自己构建的Docker镜像。与使用Docker Hub等公共仓库相比,私有部署提供了更好的安全性、可控性和性能。

二、本地打包镜像到内网服务器部署流程

1. 本地构建Docker镜像

首先确保你已经在本地构建好Docker镜像:

bash 复制代码
# 构建镜像(假设你的Dockerfile在当前目录)
docker build -t my-app:1.0 .

2. 在内网服务器上搭建私有仓库(可选)

如果你需要频繁部署多个镜像,建议搭建私有仓库:

方法一:使用Docker Registry(官方方案)

bash 复制代码
# 在内网服务器上运行
docker run -d -p 5000:5000 --restart=always --name registry registry:2

方法二:使用Harbor(企业级方案)

Harbor介绍与搭建并使用教程

Harbor提供了更完善的功能,包括UI界面、权限控制等:

  1. 下载Harbor安装包
  2. 修改harbor.yml配置
  3. 运行安装脚本

3. 将本地镜像推送到私有仓库

如果使用私有仓库:

bash 复制代码
# 标记镜像
# docker tag your-image-name:tag your-server-ip:5000/your-image-name:tag
docker tag my-app:1.0 192.168.1.100:5000/my-app:1.0

# 推送镜像(确保服务器防火墙开放了5000端口)
# docker push your-server-ip:5000/your-image-name:tag
docker push 192.168.1.100:5000/my-app:1.0

如果直接传输到服务器(不使用私有仓库):

bash 复制代码
# 保存镜像为文件
# docker save -o your-image-name.tar your-image-name:tag
docker save -o my-app-1.0.tar my-app:1.0

# 将文件传输到内网服务器(使用scp或其他方式)
# scp your-image-name.tar username@your-server-ip:/path/to/destination/
scp my-app-1.0.tar admin@192.168.1.100:/home/admin/docker-images/

4. 在内网服务器上加载和运行镜像

如果使用私有仓库:

bash 复制代码
# 从私有仓库拉取
# docker pull your-server-ip:5000/your-image-name:tag
docker pull 192.168.1.100:5000/my-app:1.0

# 运行容器
# docker run -d -p host-port:container-port your-server-ip:5000/your-image-name:tag
docker run -d -p 8081:8080 192.168.1.100:5000/my-app:1.0

如果直接传输了镜像文件:

bash 复制代码
# 在服务器上加载镜像
# docker load -i your-image-name.tar
docker load -i /home/admin/docker-images/my-app-1.0.tar

# 运行容器
# docker run -d -p host-port:container-port your-image-name:tag
docker run -d -p 8081:8080 my-app:1.0

三、常见问题解决

  1. HTTP仓库问题:如果使用非HTTPS仓库,需在客户端Docker配置中添加:
bash 复制代码
 # 在/etc/docker/daemon.json中添加(示例IP:192.168.1.100)
{
  "insecure-registries": ["192.168.1.100:5000"]
}
# 然后重启docker服务
sudo systemctl restart docker
  1. 权限问题:Harbor等仓库需要先登录:
bash 复制代码
# 登录私有仓库示例(用户admin,密码123456)
docker login 192.168.1.100:5000 -u admin -p 123456
  1. 存储空间 :私有仓库默认存储在/var/lib/registry,确保有足够空间
bash 复制代码
# 查看私有仓库存储使用情况(假设仓库容器名为my-private-registry)
docker exec -it my-private-registry du -sh /var/lib/registry

四、进阶建议

  1. 使用CI/CD工具自动化构建和部署流程
bash 复制代码
    # Jenkins示例构建命令
    docker build -t ${JOB_NAME}:${BUILD_NUMBER} .
    docker tag ${JOB_NAME}:${BUILD_NUMBER} 192.168.1.100:5000/${JOB_NAME}:${BUILD_NUMBER}
    docker push 192.168.1.100:5000/${JOB_NAME}:${BUILD_NUMBER}
  1. 为镜像打上有意义的标签(如版本号、构建日期)
bash 复制代码
    # 使用版本号+构建日期
    docker build -t my-app:1.0-$(date +%Y%m%d) .
  1. 定期清理旧镜像释放空间
bash 复制代码
    # 删除7天前的镜像
    docker images --format "{{.ID}} {{.CreatedSince}}" | grep "weeks ago" | awk '{print $1}' | xargs docker rmi
相关推荐
小陈phd13 小时前
混合知识库搭建:本地Docker部署Neo4j图数据库与Milvus向量库
数据库·docker·neo4j
Wpa.wk14 小时前
容器编排 - 了解K8s(pod, deployment,service,lable等概念)
经验分享·测试工具·docker·云原生·容器·kubernetes
Wpa.wk17 小时前
容器编排 - K8s - 配置文件参数说明和基础命令
经验分享·测试工具·docker·云原生·容器·kubernetes
LCG米19 小时前
基于PyTorch的TCN-GRU电力负荷预测:从多维数据预处理到Docker云端部署
pytorch·docker·gru
Warren9820 小时前
接口测试理论
docker·面试·职场和发展·eureka·ansible
杭州杭州杭州20 小时前
Docker
运维·docker·容器
等什么君!1 天前
Docker 数据卷:MySQL 数据同步实战
运维·docker·容器
礼拜天没时间.1 天前
《Docker实战入门与部署指南:从核心概念到网络与数据管理》:环境准备与Docker安装
运维·网络·docker·容器·centos
风流倜傥唐伯虎1 天前
Windows 版 Docker 的 Linux 环境(docker-desktop)与 builder-jammy-base:latest 镜像核心区别
linux·docker·容器
Ha_To1 天前
2026.1.30 搭建docker仓库
运维·docker·容器