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中验证:

相关推荐
iambooo1 小时前
Docker 架构与核心原理深度解析:容器到底是怎么实现的?
运维·docker·容器
peng_YuJun2 小时前
openEuler 虚拟机从零到一:完整部署指南
linux·运维·服务器·vmware·openeuler
海兰2 小时前
Docker部署OpenClaw及常见问题解决(win11)
docker·容器·eureka
红豆子不相思2 小时前
Keepalived
运维·服务器·网络
古月-一个C++方向的小白2 小时前
Linux——进程控制
linux·运维·服务器
文静小土豆3 小时前
CentOS 7 OpenSSH 10.2p1 升级全攻略(含离线安装与回退方案)
linux·运维·centos·ssh
qq_316837753 小时前
使用 certbot docker镜像生成阿里云域名ssl证书
阿里云·docker·ssl
木雷坞3 小时前
使用Docker Compose部署PostgreSQL:从入门到实践
docker·postgresql·容器
五阿哥永琪3 小时前
进程的调度算法
linux·运维·服务器