Docker 部署 AlmaLinux 全流程教程
AlmaLinux 作為 RHEL 二進(jìn)制兼容的免費(fèi)企業(yè)級(jí)發(fā)行版,由 CloudLinux 團(tuán)隊(duì)發(fā)起、基金會(huì)維護(hù),不僅解決了 CentOS 停更后的替代需求,更以“永久免費(fèi)+10年長(zhǎng)期支持”成為企業(yè)服務(wù)器部署的優(yōu)選。而通過(guò) Docker 部署,能徹底規(guī)避傳統(tǒng)裝機(jī)“環(huán)境不一致、遷移難、版本管理亂”的痛點(diǎn),尤其適合遺留 CentOS 系統(tǒng)遷移、微服務(wù)基礎(chǔ)設(shè)施搭建等場(chǎng)景。下面結(jié)合軒轅鏡像平臺(tái)特性,帶大家從環(huán)境準(zhǔn)備到部署驗(yàn)證一步步落地。
關(guān)于 AlmaLinux
1. AlmaLinux 核心價(jià)值
作為企業(yè)級(jí)發(fā)行版的“后起之秀”,其競(jìng)爭(zhēng)力集中在三個(gè)關(guān)鍵維度:
- 兼容性無(wú)短板:與 RHEL 二進(jìn)制 1:1 兼容,原 CentOS、RHEL 上的應(yīng)用(如 Nginx、MySQL、Java 服務(wù))可直接遷移,無(wú)需修改配置或依賴,省去“重編譯、調(diào)參數(shù)”的麻煩
- 長(zhǎng)期穩(wěn)定保障:每個(gè)版本提供 10 年安全更新(比如 AlmaLinux 8 支持到 2029 年,9 支持到 2032 年),比普通發(fā)行版多 5-7 年支持周期,適合關(guān)鍵業(yè)務(wù)長(zhǎng)期運(yùn)行
- 輕量與靈活兼顧:提供“默認(rèn)鏡像”(含完整 DNF 工具鏈)和“Minimal 鏡像”(僅含 microdnf,體積縮小 40%),可根據(jù)場(chǎng)景選擇,比如微服務(wù)用 Minimal 版節(jié)省資源,傳統(tǒng)服務(wù)用默認(rèn)版方便運(yùn)維
2. Docker 部署 AlmaLinux 核心優(yōu)勢(shì)
對(duì)比傳統(tǒng)“光盤裝機(jī)+手動(dòng)配環(huán)境”,Docker 方式更貼合現(xiàn)代運(yùn)維節(jié)奏:
- 環(huán)境絕對(duì)一致:鏡像已打包所有依賴(系統(tǒng)庫(kù)、包管理器、基礎(chǔ)工具),開發(fā)機(jī)、測(cè)試機(jī)、生產(chǎn)服務(wù)器跑的都是同一個(gè)環(huán)境,再也不會(huì)出現(xiàn)“本地能跑、線上報(bào)錯(cuò)”
- 資源占用極低:容器是進(jìn)程級(jí)隔離,比虛擬機(jī)省 80% 內(nèi)存——AlmaLinux 默認(rèn)鏡像僅 200MB 左右,Minimal 版僅 120MB,啟動(dòng)耗時(shí) 2-3 秒,適合高密度部署
- 版本管理靈活:可同時(shí)跑 AlmaLinux 8 和 9 容器,分別部署依賴不同系統(tǒng)版本的應(yīng)用(比如老項(xiàng)目用 8,新項(xiàng)目用 9),互不干擾
- 遷移成本為零:通過(guò)
docker save導(dǎo)出鏡像,拷貝到新服務(wù)器docker load就能用,3 分鐘完成跨機(jī)器遷移,比傳統(tǒng)“重裝系統(tǒng)+裝軟件”快 10 倍以上 - 運(yùn)維門檻低:用
docker命令就能啟停、日志查看、備份,新手學(xué) 10 分鐘就能上手,不用記復(fù)雜的 Linux 裝機(jī)命令
?? 準(zhǔn)備工作
部署前需確保系統(tǒng)已安裝 Docker 環(huán)境,未安裝的用戶可通過(guò)軒轅鏡像提供的腳本一鍵配置:
Linux Docker & Docker Compose 一鍵安裝
腳本支持 CentOS、Ubuntu、Debian 等主流發(fā)行版,自動(dòng)配置鏡像加速源,避免拉取鏡像慢的問題:
# 一鍵安裝 Docker + Docker Compose,全程無(wú)需手動(dòng)干預(yù)
bash <(wget -qO- https://xuanyuan.cloud/docker.sh)
驗(yàn)證安裝結(jié)果
執(zhí)行以下命令,若輸出 Docker 和 Docker Compose 版本信息,說(shuō)明安裝成功:
docker --version && docker compose --version
示例輸出(版本號(hào)可能不同,正常):
Docker version 27.0.3, build 7d4bcd8
Docker Compose version v2.20.2
1. 查看并拉取 AlmaLinux 鏡像
AlmaLinux 鏡像已同步至軒轅鏡像平臺(tái),支持“默認(rèn)版”“Minimal 版”及多版本標(biāo)簽,可根據(jù)需求選擇:
1.1 鏡像信息查詢
先訪問軒轅鏡像的 AlmaLinux 詳情頁(yè),查看標(biāo)簽、更新記錄、架構(gòu)支持等信息:
?? 軒轅鏡像 AlmaLinux 頁(yè)面
關(guān)鍵提示:
almalinux:latest始終指向最新穩(wěn)定版(當(dāng)前是 9.6),適合大多數(shù)場(chǎng)景- 需精簡(jiǎn)環(huán)境選
almalinux:minimal(或?qū)?yīng)版本,如almalinux:9-minimal) - 老項(xiàng)目兼容選 8 系列標(biāo)簽(如
almalinux:8),新項(xiàng)目?jī)?yōu)先用 9 系列
1.2 多種拉取方式(按需選擇)
方式 1:軒轅鏡像免登錄拉?。ㄍ扑]新手)
無(wú)需注冊(cè)賬戶,直接拉取最新穩(wěn)定版(默認(rèn)鏡像):
# 拉取最新版默認(rèn)鏡像(等價(jià)于 almalinux:9.6)
docker pull xxx.xuanyuan.run/library/almalinux:latest
# 若需 Minimal 精簡(jiǎn)版,拉取這個(gè)標(biāo)簽
docker pull xxx.xuanyuan.run/library/almalinux:minimal
方式 2:軒轅鏡像登錄拉取(企業(yè)用戶)
已注冊(cè)軒轅鏡像平臺(tái)的用戶,可通過(guò)登錄獲取更穩(wěn)定的拉取體驗(yàn):
# 登錄軒轅鏡像(首次登錄需輸入用戶名+密碼)
docker login docker.xuanyuan.run
# 拉取 AlmaLinux 8 版本(適配老項(xiàng)目)
docker pull docker.xuanyuan.run/library/almalinux:8
# 拉取 8 系列 Minimal 版
docker pull docker.xuanyuan.run/library/almalinux:8-minimal
方式 3:官方 Docker Hub 拉?。ǘ嗉軜?gòu)需求)
若需要 arm64v8、ppc64le 等非 amd64 架構(gòu)鏡像,可直接從官方倉(cāng)庫(kù)拉?。?/p>
# 官方倉(cāng)庫(kù)拉取最新版默認(rèn)鏡像
docker pull almalinux:latest
# 拉取 arm64v8 架構(gòu)的 9 版本
docker pull arm64v8/almalinux:9
方式 4:拉取后重命名(簡(jiǎn)化后續(xù)命令)
若拉取地址較長(zhǎng),可重命名為簡(jiǎn)潔標(biāo)簽,方便后續(xù)使用:
# 將軒轅鏡像拉取的鏡像重命名為 almalinux:latest
docker tag xxx.xuanyuan.run/library/almalinux:latest almalinux:latest
# 刪除原標(biāo)簽(可選,避免占用額外標(biāo)簽空間)
docker rmi xxx.xuanyuan.run/library/almalinux:latest
1.3 驗(yàn)證拉取結(jié)果
執(zhí)行以下命令,若能看到 AlmaLinux 鏡像信息,說(shuō)明拉取成功:
docker images | grep almalinux
示例輸出:
REPOSITORY TAG IMAGE ID CREATED SIZE
almalinux latest a1b2c3d4e5f6 1 week ago 202MB
almalinux minimal b2c3d4e5f6a1 1 week ago 125MB
2. 部署 AlmaLinux 實(shí)戰(zhàn)(三種方案)
結(jié)合“測(cè)試驗(yàn)證”“生產(chǎn)使用”“企業(yè)批量管理”三種場(chǎng)景,提供對(duì)應(yīng)的部署方案,均基于 AlmaLinux 9(最新穩(wěn)定版)演示。
2.1 快速部署(最簡(jiǎn)測(cè)試場(chǎng)景)
適合臨時(shí)驗(yàn)證環(huán)境、學(xué)習(xí) Linux 命令、測(cè)試依賴兼容性等場(chǎng)景,一鍵啟動(dòng)交互式容器:
# 啟動(dòng)容器并進(jìn)入命令行,命名為 alma-test
docker run -it --name alma-test almalinux:latest /bin/bash
核心參數(shù)說(shuō)明
-it:交互式運(yùn)行(保持終端連接,能直接輸入命令)--name alma-test:給容器起固定名稱,后續(xù)停止、重啟更方便/bin/bash:?jiǎn)?dòng)后默認(rèn)進(jìn)入 Bash 命令行(AlmaLinux 默認(rèn) Shell)
基礎(chǔ)操作演示
進(jìn)入容器后,可執(zhí)行以下命令熟悉環(huán)境:
# 查看系統(tǒng)版本(確認(rèn)是 AlmaLinux 9)
cat /etc/almalinux-release
# 安裝基礎(chǔ)工具(測(cè)試 DNF 包管理器)
dnf install -y wget vim net-tools
# 查看 IP 地址(驗(yàn)證網(wǎng)絡(luò)正常)
ip addr
# 退出容器:臨時(shí)退出(容器繼續(xù)運(yùn)行)按 Ctrl+P+Q;完全退出(停止容器)輸入 exit
2.2 掛載目錄部署(推薦生產(chǎn)場(chǎng)景)
通過(guò)宿主機(jī)目錄掛載,實(shí)現(xiàn)“數(shù)據(jù)持久化、配置獨(dú)立管理、日志分離”——即使容器刪除,數(shù)據(jù)也不會(huì)丟失,適合生產(chǎn)環(huán)境使用。
第一步:創(chuàng)建宿主機(jī)掛載目錄
根據(jù)實(shí)際需求創(chuàng)建“數(shù)據(jù)目錄”“配置目錄”“日志目錄”(路徑可自定義,這里用 /data/alma 為例):
# 一次性創(chuàng)建三個(gè)核心目錄
mkdir -p /data/alma/{data,conf,logs}
# 給目錄授權(quán)(避免容器內(nèi)用戶無(wú)讀寫權(quán)限,生產(chǎn)環(huán)境可按需調(diào)整權(quán)限)
chmod -R 777 /data/alma
第二步:?jiǎn)?dòng)容器并掛載目錄
docker run -d --name alma-prod \
-p 2222:22 \ # 映射 SSH 端口(如需遠(yuǎn)程連接容器內(nèi)服務(wù))
-p 8080:80 \ # 映射 HTTP 端口(后續(xù)部署 Nginx、Tomcat 等服務(wù)用)
-v /data/alma/data:/var/data \ # 數(shù)據(jù)目錄掛載(存業(yè)務(wù)數(shù)據(jù))
-v /data/alma/conf:/etc/custom \ # 配置目錄掛載(存自定義配置)
-v /data/alma/logs:/var/log/custom \ # 日志目錄掛載(存應(yīng)用日志)
-e TZ=Asia/Shanghai \ # 設(shè)置時(shí)區(qū)(解決容器默認(rèn) UTC 時(shí)區(qū)問題)
almalinux:latest \
# 后臺(tái)運(yùn)行命令(確保容器不退出,這里以啟動(dòng) crond 定時(shí)任務(wù)為例)
/bin/bash -c "dnf install -y crontabs && crond -n"
目錄映射說(shuō)明
| 宿主機(jī)目錄 | 容器內(nèi)目錄 | 核心用途 |
|---|---|---|
/data/alma/data |
/var/data |
存放業(yè)務(wù)數(shù)據(jù)(如數(shù)據(jù)庫(kù)文件、應(yīng)用配置文件) |
/data/alma/conf |
/etc/custom |
存放自定義配置(如服務(wù)啟動(dòng)腳本、環(huán)境變量) |
/data/alma/logs |
/var/log/custom |
存放應(yīng)用日志(如服務(wù)運(yùn)行日志、錯(cuò)誤日志) |
進(jìn)入運(yùn)行中的容器
部署后如需操作容器(如安裝軟件、修改配置),執(zhí)行以下命令:
# 進(jìn)入已啟動(dòng)的 alma-prod 容器
docker exec -it alma-prod /bin/bash
2.3 Docker Compose 部署(企業(yè)級(jí)批量管理)
適合多服務(wù)組合場(chǎng)景(如 AlmaLinux + Nginx + MySQL + Redis),通過(guò) docker-compose.yml 配置文件統(tǒng)一管理,支持一鍵啟停、批量部署,運(yùn)維效率更高。
第一步:創(chuàng)建 docker-compose.yml 配置文件
在 /data/alma-compose 目錄下創(chuàng)建配置文件(路徑可自定義):
version: '3.8' # 適配 Docker Compose 新版本特性
services:
alma:
image: almalinux:latest # 使用的 AlmaLinux 鏡像
container_name: alma-service # 容器名稱(固定,方便管理)
ports:
- "2222:22" # SSH 端口映射
- "8080:80" # HTTP 端口映射
volumes:
- ./data:/var/data # 數(shù)據(jù)目錄(相對(duì)路徑,與 yml 文件同目錄)
- ./conf:/etc/custom # 配置目錄
- ./logs:/var/log/custom # 日志目錄
environment:
- TZ=Asia/Shanghai # 時(shí)區(qū)配置(上海時(shí)區(qū))
- LANG=en_US.UTF-8 # 字符集配置(避免中文亂碼)
restart: always # 容器故障自動(dòng)重啟(保障服務(wù)高可用)
command: /bin/bash -c "dnf install -y openssh-server && /usr/sbin/sshd -D" # 啟動(dòng) SSH 服務(wù)
第二步:創(chuàng)建配套目錄并啟動(dòng)服務(wù)
# 1. 創(chuàng)建與配置文件對(duì)應(yīng)的目錄(data、conf、logs)
mkdir -p /data/alma-compose/{data,conf,logs}
cd /data/alma-compose # 進(jìn)入配置文件所在目錄
# 2. 啟動(dòng)服務(wù)(后臺(tái)運(yùn)行,-d 表示 detached 模式)
docker compose up -d
# 3. 常用管理命令(按需使用)
docker compose ps # 查看服務(wù)狀態(tài)(是否正常運(yùn)行)
docker compose stop # 停止服務(wù)(容器保留)
docker compose down # 停止并刪除容器(數(shù)據(jù)在掛載目錄,不會(huì)丟失)
docker compose logs -f # 實(shí)時(shí)查看容器日志(排查問題用)
docker compose restart # 重啟服務(wù)
3. 部署結(jié)果驗(yàn)證
通過(guò)以下三步,確認(rèn) AlmaLinux 容器正常運(yùn)行且功能可用:
3.1 基礎(chǔ)狀態(tài)驗(yàn)證
# 查看容器是否在運(yùn)行(STATUS 列顯示 Up 即為正常)
docker ps | grep alma
# 查看容器資源占用(確認(rèn) CPU、內(nèi)存使用正常,無(wú)異常占用)
docker stats alma-prod # 按 Ctrl+C 退出統(tǒng)計(jì)
3.2 環(huán)境功能驗(yàn)證
# 1. 進(jìn)入容器(以 alma-prod 為例)
docker exec -it alma-prod /bin/bash
# 2. 驗(yàn)證包管理器(安裝 Nginx 測(cè)試,Minimal 版需用 microdnf)
dnf install -y nginx # 默認(rèn)版用 dnf;Minimal 版替換為 microdnf install -y nginx
systemctl start nginx # 啟動(dòng) Nginx
# 3. 驗(yàn)證掛載目錄(在容器內(nèi)創(chuàng)建文件,宿主機(jī)查看是否同步)
echo "AlmaLinux production data" > /var/data/test.txt
exit # 退出容器
# 4. 宿主機(jī)查看文件(確認(rèn)掛載生效,能看到容器內(nèi)創(chuàng)建的文件)
cat /data/alma/data/test.txt
3.3 服務(wù)訪問驗(yàn)證
若部署時(shí)映射了 80 端口且啟動(dòng)了 Nginx,可通過(guò)瀏覽器或 curl 驗(yàn)證服務(wù)是否可訪問:
# 宿主機(jī)本地訪問容器內(nèi) Nginx
curl http://127.0.0.1:8080
# 遠(yuǎn)程訪問(需開放服務(wù)器安全組 8080 端口)
curl http://服務(wù)器公網(wǎng)IP:8080
若輸出 Nginx 歡迎頁(yè)內(nèi)容(或自定義頁(yè)面),說(shuō)明服務(wù)部署成功。
4. 常見問題排查
4.1 拉取鏡像時(shí)提示“標(biāo)簽不存在”
原因:輸入的標(biāo)簽錯(cuò)誤(如 almalinux:10 尚未發(fā)布,或 almalinux:9.7 未同步)。
解決方案:參考軒轅鏡像頁(yè)面的“支持標(biāo)簽列表”,用正確標(biāo)簽拉取,比如:
# 拉取已支持的 9.6 版本
docker pull xxx.xuanyuan.run/library/almalinux:9.6
4.2 Minimal 版無(wú)法使用 dnf 命令
原因:Minimal 鏡像是精簡(jiǎn)版,默認(rèn)只裝了 microdnf(輕量包管理器),沒裝完整 dnf。
解決方案:直接用 microdnf 或手動(dòng)安裝 dnf:
# 方案 1:用 microdnf 安裝軟件
microdnf install -y vim
# 方案 2:安裝完整 dnf(適合長(zhǎng)期使用 Minimal 版)
microdnf install -y dnf
4.3 容器內(nèi)時(shí)區(qū)顯示錯(cuò)誤(與本地差 8 小時(shí))
原因:容器默認(rèn)用 UTC 時(shí)區(qū),未配置本地時(shí)區(qū)。
解決方案:
- 啟動(dòng)時(shí)加
-e TZ=Asia/Shanghai(推薦,永久生效) - 已啟動(dòng)容器臨時(shí)修改(重啟后失效):
docker exec -it alma-prod /bin/bash ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime date # 驗(yàn)證時(shí)區(qū)是否正確
4.4 掛載目錄后“權(quán)限被拒絕”
原因:宿主機(jī)目錄權(quán)限不足,容器內(nèi)用戶(默認(rèn) root,部分場(chǎng)景是普通用戶)無(wú)讀寫權(quán)限。
解決方案:
# 1. 宿主機(jī)給目錄授權(quán)(生產(chǎn)環(huán)境可按實(shí)際用戶組調(diào)整,這里用 777 方便測(cè)試)
chmod -R 777 /data/alma
# 2. 或啟動(dòng)時(shí)指定 root 用戶(確保權(quán)限足夠)
docker run -d -u root --name alma-prod -v /data/alma:/var/data almalinux:latest
4.5 dnf 安裝軟件速度慢
原因:默認(rèn)用官方源,國(guó)內(nèi)訪問速度慢。
解決方案:替換為國(guó)內(nèi)鏡像源(以阿里云為例):
# 進(jìn)入容器后執(zhí)行
echo -e "[base]\nname=AlmaLinux \$releasever - Base - mirrors.aliyun.com\nbaseurl=http://mirrors.aliyun.com/almalinux/\$releasever/BaseOS/\$basearch/os/\ngpgcheck=1\ngpgkey=http://mirrors.aliyun.com/almalinux/RPM-GPG-KEY-AlmaLinux" > /etc/yum.repos.d/base.repo
dnf clean all && dnf makecache # 清理緩存并生成新緩存
結(jié)尾
至此,你已掌握 AlmaLinux 的 Docker 部署全流程——從鏡像拉取的多種方案,到適配不同場(chǎng)景的部署實(shí)戰(zhàn),再到問題排查的具體方法,每個(gè)步驟都貼合實(shí)際運(yùn)維需求。
對(duì)于新手,建議先從“快速部署”熟悉 AlmaLinux 環(huán)境,再嘗試“掛載目錄”方案理解持久化的重要性;企業(yè)用戶推薦用“Docker Compose 部署”,配合軒轅鏡像加速,可支撐生產(chǎn)級(jí)服務(wù)的穩(wěn)定運(yùn)行。

浙公網(wǎng)安備 33010602011771號(hào)