在 AnolisOS23 操作系统中部署 Docker 并搭建私有 Harbor 仓库,是企业级容器化部署的核心基础环节。Docker 作为容器化技术的核心工具,能够实现应用程序的快速打包、分发与运行;而 Harbor 作为开源的企业级容器镜像仓库,具备安全存储、镜像管理、访问控制等强大功能,二者结合可构建高效、安全的内部容器生态。本文将详细介绍从 Docker 环境配置、代理与镜像源优化,到 Docker Compose 安装、Harbor 私有仓库搭建及镜像推送的完整流程,步骤清晰且适配 AnolisOS23 系统特性,适合运维人员与开发人员参考实践。
一、Docker 环境准备与安装
(一)配置阿里云 Docker 软件镜像源
AnolisOS23 系统默认的软件源可能存在 Docker 安装包版本老旧、下载速度慢等问题,因此首先需要配置阿里云 Docker 专属镜像源,确保获取稳定且最新的 Docker 安装包。通过以下命令创建 Docker 软件源配置文件,覆盖系统默认源设置:
Plain
sudo tee /etc/yum.repos.d/docker-ce.repo <<-'EOF'
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/source/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/source/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF
上述配置文件包含了 Docker CE 的Stable、Test、Nightly等多个仓库分支,其中仅启用稳定版仓库(enabled=1),确保安装的 Docker 版本稳定可靠;同时通过 gpgcheck=1 开启校验功能,防止安装包被篡改,保障系统安全。
(二)安装 Docker 核心组件
配置好镜像源后,使用 dnf 包管理器安装 Docker CE 及相关依赖组件。AnolisOS23 系统默认采用 dnf 作为包管理工具,相比 yum 具备更快的下载速度和更好的依赖处理能力。执行以下命令完成安装:
Plain
dnf install -y docker-ce docker-ce-cli containerd.io --allowerasing
其中:
-
docker-ce:Docker 社区版核心引擎,提供容器运行时环境;
-
docker-ce-cli:Docker 命令行工具,用于通过命令行操作 Docker;
-
<containerd.io>:容器运行时接口(CRI)实现,负责容器的生命周期管理;
-
--allowerasing 参数:用于解决安装过程中可能出现的依赖冲突问题,自动替换冲突的软件包,确保安装顺利进行。
安装完成后,可通过 docker --version 命令验证 Docker 是否安装成功,若输出类似 "Docker version 25.0.0, build 29cf629" 的版本信息,则说明安装成功。
(三)配置 Docker 代理(可选)
若服务器处于内网环境,需要通过代理服务器访问外部网络(如下载 Docker 镜像、拉取 Harbor 安装包等),则需配置 Docker 服务的代理参数。通过修改 Docker 服务配置文件实现代理设置:
Plain
vim /usr/lib/systemd/system/docker.service
在文件的 [Service] 段落中添加以下环境变量配置:
Plain
[Service]
Environment="HTTP_PROXY=http://192.168.56.1:10811"
Environment="HTTPS_PROXY=http://192.168.56.1:10811"
Environment="NO_PROXY=localhost,192.168.56.0/24,anolisOS-111"
参数说明:
-
HTTP_PROXY/HTTPS_PROXY:指定 HTTP/HTTPS 代理服务器的地址和端口(示例中代理地址为 <192.168.56.1>,端口为 10811),需根据实际环境替换;
-
NO_PROXY:指定无需通过代理访问的地址列表,包括本地回环地址(localhost)、内网网段(<192.168.56.0/24>)和服务器主机名(anolisOS-111),避免内网服务之间的通信被代理拦截。
(四)配置 Docker 非安全仓库访问
由于后续搭建的 Harbor 私有仓库默认使用 HTTP 协议(未配置 HTTPS 证书),而 Docker 默认仅允许访问 HTTPS 协议的仓库,因此需要配置 Docker 允许访问非安全仓库(HTTP 协议)。通过修改 Docker 守护进程配置文件实现:
Plain
vim /etc/docker/daemon.json
在文件中添加以下内容(指定 Harbor 私有仓库的 IP 地址,示例为 <192.168.56.111>):
Plain
{
"insecure-registries": ["192.168.56.111"]
}
该配置表示允许 Docker 直接访问 <192.168.56.111> 对应的 HTTP 协议仓库,无需进行 SSL 证书校验。若有多个非安全仓库,可在数组中添加多个 IP 或域名(如 ["<192.168.56.111>", "<192.168.56.112>"])。
(五)重启 Docker 服务使配置生效
修改完 Docker 相关配置后,需要重新加载系统服务配置并重启 Docker 服务,确保所有配置参数生效。执行以下命令:
Plain
systemctl daemon-reload
systemctl restart docker
-
systemctl daemon-reload:重新加载系统服务的配置文件,让系统识别到 Docker 服务配置的变更;
-
systemctl restart docker:重启 Docker 服务,应用新的配置参数。
重启完成后,可通过 systemctl status docker 命令查看 Docker 服务状态,若显示 "active (running)",则说明服务正常运行。
(六)Docker 登录私有仓库(预操作)
后续搭建 Harbor 私有仓库后,需要通过 Docker 客户端登录仓库才能进行镜像推送、拉取等操作。此处先介绍登录命令,实际登录需在 Harbor 仓库搭建完成后执行:
Plain
docker login 192.168.56.111
执行命令后,会提示输入 Harbor 仓库的用户名和密码(默认账号密码将在 Harbor 配置部分介绍),输入正确后即可完成登录,登录成功后会显示 "Login Succeeded" 提示。
二、安装 Docker Compose
Docker Compose 是 Docker 官方提供的多容器编排工具,能够通过 YAML 文件定义多个容器的服务配置,并一键启动、停止所有服务。Harbor 私有仓库的部署依赖 Docker Compose,因此需要先安装该工具。
(一)下载 Docker Compose 二进制文件
访问 Docker Compose 官方 GitHub 发布页面(https://github.com/docker/compose/releases),选择适合 Linux x86_64 架构的最新稳定版二进制文件(如 docker-compose-linux-x86_64),可通过 wget 命令直接下载(以具体版本为例):
Plain
wget https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64
若服务器无法直接访问 GitHub,可先在本地下载文件,再通过 scp 等工具上传至服务器。
(二)配置 Docker Compose 可执行权限
下载完成后,将二进制文件移动到系统可执行目录(/usr/local/bin/),并修改文件名为 docker-compose,方便后续调用:
Plain
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
然后为文件添加可执行权限,确保系统能够运行该工具:
Plain
chmod +x /usr/local/bin/docker-compose
(三)验证 Docker Compose 安装
安装完成后,执行以下命令验证是否安装成功:
Plain
docker-compose --version
若输出类似 "Docker Compose version v2.24.5" 的版本信息,则说明安装成功,可正常用于后续 Harbor 仓库的部署。
三、搭建 Harbor 私有仓库
Harbor 是 VMware 开源的企业级容器镜像仓库,支持镜像的存储、分发、访问控制、安全扫描等功能,相比 Docker 官方的 Registry 仓库,具备更完善的企业级特性。以下是基于 AnolisOS23 系统的 Harbor 部署步骤。
(一)下载 Harbor 离线安装包
Harbor 提供在线安装包和离线安装包两种形式,离线安装包包含所有依赖组件,无需联网即可部署,适合内网环境。访问 Harbor 官方 GitHub 发布页面(https://github.com/goharbor/harbor/releases),下载最新稳定版的离线安装包(如 harbor-offline-installer-v2.14.2.tgz)。
(二)解压安装包并清理文件
下载完成后,在服务器上执行以下命令解压安装包:
Plain
tar -xvf harbor-offline-installer-v2.14.2.tgz
解压后会生成 harbor 目录,包含 Harbor 的配置文件、安装脚本等。解压完成后,可删除安装包以节省磁盘空间:
Plain
rm -rf harbor-offline-installer-v2.14.2.tgz
进入 harbor 目录准备进行配置:
Plain
cd harbor/
(三)配置 Harbor 核心参数
Harbor 提供了默认的配置文件模板 harbor.yml.tmpl,需要复制该模板并修改为实际的配置文件 harbor.yml:
Plain
cp harbor.yml.tmpl harbor.yml
使用 vim 编辑 harbor.yml 文件,修改核心配置参数:
Plain
vim harbor.yml
关键配置修改如下(其余默认配置可根据需求调整):
Plain
# 配置 Harbor 服务器的主机名或 IP 地址,此处填写服务器内网 IP(示例为 192.168.56.111)
hostname: 192.168.56.111
# HTTP 相关配置
http:
# HTTP 服务端口,默认 80,若 80 端口被占用可修改为其他端口(如 8080)
port: 80
# HTTPS 相关配置(暂不启用,全部注释掉)
#https:
# HTTPS 服务端口,默认 443
#port: 443
# SSL 证书和私钥文件路径(启用 HTTPS 时需配置)
#certificate: /your/certificate/path
#private_key: /your/private/key/path
# 是否启用强 SSL 加密套件(默认 false)
#strong_ssl_ciphers: false
配置说明:
-
hostname:必须配置为服务器的实际 IP 或可访问的域名,否则 Docker 客户端无法正常连接 Harbor 仓库;
-
HTTP 端口:默认 80 端口,若服务器 80 端口已被 Nginx 等服务占用,可修改为其他未占用端口(如 8090),修改后需同步更新 Docker 非安全仓库配置和登录地址;
-
HTTPS 配置:此处暂不启用,因此将 HTTPS 相关配置全部注释,后续若需启用 HTTPS,需准备 SSL 证书并配置证书路径。
(四)初始化并启动 Harbor 服务
修改完配置文件后,执行 Harbor 提供的 prepare 脚本进行环境初始化,该脚本会根据 harbor.yml 配置生成相关的 Docker Compose 配置文件和服务依赖:
Plain
./prepare
初始化完成后,通过 Docker Compose 启动 Harbor 所有服务(-d 参数表示后台运行):
Plain
docker-compose up -d
启动过程中,Docker 会自动拉取 Harbor 所需的所有镜像(如 nginx、postgresql、redis、harbor-core 等),并创建对应的容器。启动完成后,可通过 docker-compose ps 命令查看 Harbor 各服务的运行状态,若所有服务的状态均为 "Up",则说明 Harbor 部署成功。
(五)Harbor 默认账号与访问验证
Harbor 部署成功后,可通过浏览器访问 http://192.168.56.111(对应配置的 hostname 和 HTTP 端口),进入 Harbor 登录页面。默认登录账号和密码如下:
-
用户名:admin
-
密码:Harbor12345
登录成功后,即可进入 Harbor 管理界面,可进行仓库创建、用户管理、镜像上传等操作。建议首次登录后及时修改默认密码,提高仓库安全性(在管理界面的 "用户设置" 中修改)。
四、镜像拉取、标签修改与私有仓库推送
搭建好 Harbor 私有仓库后,可通过 Docker 客户端拉取公共镜像,修改镜像标签后推送到私有仓库,实现镜像的内部存储与共享。以下以拉取 Kubernetes、Helm、Calico 相关镜像为例进行演示。
(一)拉取公共镜像
从 Docker Hub 公共仓库拉取所需的镜像,执行以下命令:
Plain
# 拉取 Kubernetes 镜像(版本 v1.33.6)
docker pull labring/kubernetes:v1.33.6
# 拉取 Helm 镜像(版本 v3.19.2)
docker pull labring/helm:v3.19.2
# 拉取 Calico 镜像(版本 v3.27.4)
docker pull labring/calico:v3.27.4
拉取完成后,可通过 docker images 命令查看本地镜像列表,确认镜像是否拉取成功。
(二)修改镜像标签
Docker 推送镜像到私有仓库时,镜像标签需符合 "私有仓库地址/项目名/镜像名:版本号" 的格式,其中 "项目名" 需在 Harbor 中提前创建(默认存在 library 项目,可直接使用)。执行以下命令修改镜像标签:
Plain
# 为 Kubernetes 镜像添加私有仓库标签
docker tag labring/kubernetes:v1.33.6 192.168.56.111/library/labring/kubernetes:v1.33.6
# 为 Helm 镜像添加私有仓库标签
docker tag labring/helm:v3.19.2 192.168.56.111/library/labring/helm:v3.19.2
# 为 Calico 镜像添加私有仓库标签
docker tag labring/calico:v3.27.4 192.168.56.111/library/labring/calico:v3.27.4
标签说明:
-
<192.168.56.111>:私有 Harbor 仓库的 IP 地址;
-
library:Harbor 中的默认项目名,若需自定义项目,可在 Harbor 管理界面创建后替换该字段;
-
labring/kubernetes:v1.33.6:原镜像名和版本号,保持与拉取的镜像一致。
(三)推送镜像到私有仓库
推送镜像前,需确保已通过 Docker 客户端登录 Harbor 私有仓库(参考前文 "Docker 登录私有仓库" 步骤)。登录成功后,执行以下命令推送镜像:
Plain
# 推送 Kubernetes 镜像到私有仓库
docker push 192.168.56.111/library/labring/kubernetes:v1.33.6
# 推送 Helm 镜像到私有仓库
docker push 192.168.56.111/library/labring/helm:v3.19.2
# 推送 Calico 镜像到私有仓库
docker push 192.168.56.111/library/labring/calico:v3.27.4
推送过程中,Docker 会将镜像分层上传至 Harbor 仓库,上传完成后可在 Harbor 管理界面的 "library" 项目中查看已推送的镜像,确认镜像推送成功。
五、总结
本文详细介绍了 AnolisOS23 系统下 Docker 与私有 Harbor 仓库的完整部署流程,包括 Docker 镜像源配置、安装与代理设置、Docker Compose 安装、Harbor 仓库搭建、镜像拉取与推送等核心步骤。通过该流程,可快速构建企业级的容器镜像管理平台,实现镜像的安全存储、内部共享与高效分发。在实际应用中,可根据企业需求进一步优化配置,如启用 Harbor 的 HTTPS 加密、配置镜像扫描策略、设置用户权限与访问控制等,提升容器化部署的安全性与可管理性。