Docker + Harbor 私有镜像仓库搭建

Docker

安装

使用的是腾讯云服务器 linux

powershell 复制代码
// 安装dnf-utils 的软件包
sudo dnf install -y dnf-utils

添加 Docker 的官方软件仓库到系统

powershell 复制代码
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/

安装docker引擎

powershell 复制代码
sudo yum install docker-ce docker-ce-cli containerd.io


验证安装

安装完成后,可以运行以下命令验证 Docker 是否安装成功:如图安装为29.2.0的docker版本

powershell 复制代码
docker --version

启动docker

powershell 复制代码
sudo systemctl start docker

运行一个测试容器

powershell 复制代码
docker run hello-world

设置为开机自启(建议做)

powershell 复制代码
sudo systemctl enable docker

Harbor

可以做镜像管理,支持 Docker 镜像的存储、分发和管理,提供完整的镜像生命周期管理功能。这儿主要用的也是这个特性。
安装

获取Harbor安装包

powershell 复制代码
wget https://github.com/goharbor/harbor/releases/download/v2.13.0/harbor-offline-installer-v2.13.0.tgz

配置与部署

这是核心步骤,要根据服务器情况编辑配置文件并执行安装。

powershell 复制代码
# 从模板复制配置文件
cp harbor.yml.tmpl harbor.yml
# 使用vim或nano编辑配置文件
vi harbor.yml

关键配置项说明: 在 harbor.yml 中,至少修改以下几处:

  • hostname:设置为你的服务器公网IP地址(例如 192.0.2.10)或已解析到该IP的域名。请勿使用localhost或127.0.0.1。
  • harbor_admin_password:修改一个强密码,切勿使用默认的 Harbor12345。
    访问与验证
    访问配置的ip地址,并且映射出端口号

配置docker

打开docker 修改配置文件,如果使用HTTP,在客户端机器的 /etc/docker/daemon.json 中添加

保存后重启docker,命令行为

powershell 复制代码
sudo systemctl restart docker

登录并推送测试镜像

powershell 复制代码
# 在客户端或服务器本身(也是一个Docker客户端)执行登录
docker login 49.232.200.4:8081
# 输入用户名密码

# 下载镜像
docker pull nginx

# 标记一个测试镜像并推送
docker tag nginx:latest 49.232.200.4:8081/library/nginx:v1.25
docker push 49.232.200.4:8081/library/nginx:v1.25


打包镜像

将本地的镜像文件通过DockerFile文件进行打包推送,以推送到harbor上。

新建一个文件 Dockerfile,dockerfile的文件如下

powershell 复制代码
# 基础镜像
FROM python:3.9-alpine

# 工作目录
WORKDIR /app

# 所有命令合并为一行,无换行/反斜杠,100%语法正确
RUN echo "http://mirrors.aliyun.com/alpine/v3.22/main/" > /etc/apk/repositories && echo "http://mirrors.aliyun.com/alpine/v3.22/community/" >> /etc/apk/repositories && apk update || true && apk add --no-cache gcc musl-dev libffi-dev openssl-dev && pip config set global.index-url http://pypi.tuna.tsinghua.edu.cn/simple && pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn && pip install --upgrade pip --trusted-host pypi.tuna.tsinghua.edu.cn

# 可选:预装Python包(单行版)
RUN pip install flask pandas requests --trusted-host pypi.tuna.tsinghua.edu.cn

# 启动命令
CMD ["python"]

打包该镜像的详细命令:

powershell 复制代码
docker build -t 49.232.200.4:8081/app/my-python:3.9 .

其中,docker build 是 Docker 构建镜像的主命令;
-t 49.232.200.4:8081/app/my-python:3.9是给镜像打「标签(Tag)」:

  • 其中-t(等价--tag),是docker build最常用的选项
  • 49.232.200.4:8081私有镜像仓库的地址 + 端口(你的个人服务器 IP + 仓库端口,如 Harbor / 私有 Registry),若省略这部分,镜像会标记为「本地镜像」,无法推送到远程仓库
  • app是命名空间(Namespace)」,用于归类镜像(比如按项目 / 部门划分,如app/test/prod)
  • my-python是镜像名(核心标识,自定义,需见名知意,比如你的 Python 环境镜像);
  • 3.9是镜像版本(Tag),建议用语义化版本(如3.9/3.9.0/latest),避免混用latest(易混乱);
    最后 . 是指定「构建上下文(Build Context)」路径,Docker 会把这个目录下的所有文件和子目录作为「构建上下文」,发送给 Docker daemon;
    Dockerfile中的COPY/ADD指令,只能复制「构建上下文内」的文件(比如COPY ./app.py /app/ 只能复制当前目录下的app.py)。

镜像推送命令,推送至harbor:

powershell 复制代码
docker push 49.232.200.4:8081/app/my-python:3.9

可以通过docker命令查看镜像

powershell 复制代码
docker images

推送后截图如下

在harbor中验证:

相关推荐
不像程序员的程序媛3 小时前
系统cpu内存负载资源分析
运维·服务器·数据库
Asuicao6 小时前
centos7.9版本升级ssh OpenSSH 9.8p1 源码 OpenSSL 1.1.1w 源码包以及安装升级回滚文档
运维·ssh
志栋智能7 小时前
超自动化安全中的威胁狩猎
运维·安全·自动化
蜀道山老天师7 小时前
K8s Secret 与 ConfigMap 配置管理及动态更新实战详解
云原生·容器·kubernetes
梦想的颜色7 小时前
【Docker部署插件】:使用 Docker 部署生产级 Kafka 完整版教程
安全·docker·中间件·kafka·消息队列·docker-compose·后端开发
↘"LYong7 小时前
旧版 CentOS 安装 Docker 完整指南(附国内镜像加速)
linux·运维·docker
Elastic 中国社区官方博客8 小时前
Elastic 在 Everest Group 企业搜索产品 PEAK Matrix® 评估 2026 中被评为领导者
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索
程序员在囧途8 小时前
likeadmin-api API 中转站怎么做统一报价?从 /pricing、/user/balance 到 task_id 回执的落地方法
运维·服务器·数据库·likeadmin-api·api中转站·token计费
想你依然心痛9 小时前
Linux用户空间与内核空间通信:netlink、ioctl、mmap 零拷贝与性能对比
linux·运维·服务器
沉静的小伙9 小时前
在微服务中使用领域事件
java·运维·微服务