Docker 部署 openEuler 教程及常見問題解決
openEuler 作為華為主導的開源 Linux 發行版,以“多架構適配、云原生友好、長期穩定支持”為核心優勢,在企業級服務器、邊緣計算、云原生場景中應用廣泛。通過 Docker 部署 openEuler,能將其系統優勢與容器化的“環境一致、輕量高效、快速遷移”特性深度結合,徹底解決傳統部署中“架構適配繁瑣、版本管理混亂、跨環境遷移難”的痛點。下面結合軒轅鏡像平臺特性,從環境準備到落地驗證,帶大家走通完整部署流程。
關于 openEuler
1. openEuler 核心價值
作為開源生態中的重要發行版,openEuler 的競爭力集中在三個關鍵維度,精準匹配企業級需求:
- 多架構全適配:原生支持 ARM64、x86-64、loongarch64 等架構,既能運行在普通 x86 服務器,也能完美適配鯤鵬、龍芯等國產 CPU,無需二次編譯即可跨架構部署
- 版本體系清晰:分 LTS 長期支持版(如 24.03-lts、22.03-lts)和創新版(如 25.09、24.09),LTS 版提供 5 年支持,創新版聚焦新功能,可按需選擇
- 云原生與開源生態:深度集成 Kubernetes、Docker 等云原生工具,且兼容 CentOS、RHEL 軟件生態,原有 Linux 應用可無縫遷移
2. Docker 部署 openEuler 核心優勢
對比傳統“ISO 裝機+手動配環境”,Docker 部署方式更貼合現代運維節奏:
- 架構適配零成本:鏡像已按架構預構建,拉取時自動匹配服務器架構(或手動指定),不用再花時間編譯適配,比如鯤鵬服務器直接拉取 ARM64 鏡像即可用
- 資源占用極致輕量:基礎鏡像僅 150MB 左右,啟動耗時 2 秒內,比虛擬機節省 80% 內存,單臺服務器可高密度部署數十個容器
- 版本隔離不踩坑:可同時運行 22.03-lts(穩定生產)和 25.09(創新測試)兩個版本容器,分別承載不同業務,互不干擾
- 遷移效率翻倍:通過
docker save導出鏡像,拷貝到新服務器docker load就能啟動,5 分鐘完成跨機房遷移,比傳統“重裝系統+裝依賴”快 10 倍 - 運維門檻降低:用 Docker 命令即可實現啟停、日志查看、備份,不用記 openEuler 復雜的系統配置命令,新手也能快速上手
?? 準備工作
部署前需確保服務器已安裝 Docker 環境,無論是 x86-64、ARM64 還是 loongarch64 架構均適用,未安裝的用戶可通過軒轅鏡像一鍵腳本配置:
Linux Docker & Docker Compose 一鍵安裝
腳本支持 openEuler、CentOS、Ubuntu 等主流發行版,自動配置軒轅鏡像加速源,避免拉取鏡像時速度慢:
# 一鍵安裝 Docker + Docker Compose,全程無需手動干預
bash <(wget -qO- https://xuanyuan.cloud/docker.sh)
驗證安裝結果
執行以下命令,若輸出 Docker 和 Docker Compose 版本信息,說明安裝成功:
docker --version && docker compose --version
示例輸出(版本號可能不同,正常):
Docker version 27.0.3, build 7d4bcd8
Docker Compose version v2.20.2
1. 查看并拉取 openEuler 鏡像
openEuler 鏡像已同步至軒轅鏡像平臺,標簽體系清晰(按版本號命名),支持 latest 標簽(指向最新推薦版),且覆蓋多架構,拉取前需明確版本和架構需求。
1.1 鏡像信息查詢
先訪問軒轅鏡像的 openEuler 詳情頁,確認所需版本標簽、架構支持、更新記錄:
?? 軒轅鏡像 openEuler 頁面
關鍵標簽與版本說明(避免選錯版本):
| 標簽類型 | 示例標簽 | 特點 | 適用場景 |
|---|---|---|---|
| LTS 長期支持版 | 24.03-lts-sp2、24.03 | 最新 LTS 系列,提供 5 年支持,補丁全 | 生產環境、關鍵業務 |
| LTS 舊版 | 22.03-lts-sp4、22.03 | 穩定成熟,適配大量遺留軟件 | 遺留項目、需要長期穩定的場景 |
| 創新版 | 25.09、24.09 | 含最新功能,更新頻率高 | 測試新功能、開發環境 |
| 通用標簽 | latest | 指向最新推薦版(當前是 24.03-lts-sp2) | 快速部署、不指定版本的場景 |
1.2 多種拉取方式(按需選擇)
方式 1:默認架構快速拉取(推薦新手)
無需指定架構,Docker 會自動匹配服務器架構,直接拉取最新推薦版:
# 拉取 latest 標簽(最新推薦版,當前為 24.03-lts-sp2)
docker pull xxx.xuanyuan.run/openeuler/openeuler:latest
# 拉取指定 LTS 版(如 24.03-lts-sp2,生產環境推薦)
docker pull xxx.xuanyuan.run/openeuler/openeuler:24.03-lts-sp2
# 拉取創新版(如 25.09,測試新功能用)
docker pull xxx.xuanyuan.run/openeuler/openeuler:25.09
方式 2:指定架構拉取
若服務器是特殊架構(如 ARM64 鯤鵬、loongarch64 龍芯),需明確指定架構,避免鏡像與硬件不兼容:
# 拉取 ARM64 架構 24.03-lts-sp2 版(鯤鵬服務器用)
docker pull --platform=linux/arm64 openeuler/openeuler:24.03-lts-sp2
# 拉取 x86-64 架構 24.03-lts-sp2 版(普通 x86 服務器用)
docker pull --platform=linux/amd64 openeuler/openeuler:24.03-lts-sp2
# 拉取 loongarch64 架構 24.03-lts-sp2 版(龍芯服務器用)
docker pull --platform=linux/loongarch64 openeuler/openeuler:24.03-lts-sp2
方式 3:軒轅鏡像加速拉取(國內服務器推薦)
國內服務器直接拉取官方鏡像可能較慢,通過軒轅鏡像加速拉取,速度提升 3-5 倍:
# 軒轅鏡像加速拉取 latest 版
docker pull xxx.xuanyuan.run/openeuler/openeuler:latest
# 加速拉取 ARM64 架構 22.03-lts-sp4 版
docker pull --platform=linux/arm64 xxx.xuanyuan.run/openeuler/openeuler:22.03-lts-sp4
方式 4:拉取后重命名(簡化后續命令)
若鏡像標簽較長或地址復雜,可重命名為簡潔標簽,方便后續啟動容器:
# 將拉取的 24.03-lts-sp2 版重命名為 openeuler:lts
docker tag openeuler/openeuler:24.03-lts-sp2 openeuler:lts
# 刪除原標簽(可選,避免標簽混亂)
docker rmi openeuler/openeuler:24.03-lts-sp2
1.3 驗證拉取結果
執行以下命令,若能看到 openEuler 鏡像信息,說明拉取成功:
docker images | grep openeuler
示例輸出(ARM64 架構):
REPOSITORY TAG IMAGE ID CREATED SIZE
openeuler/openeuler 24.03-lts-sp2 a1b2c3d4e5f6 2 weeks ago 158MB
openeuler lts a1b2c3d4e5f6 2 weeks ago 158MB
2. 部署 openEuler 實戰(三種方案)
結合“測試驗證”“生產部署”“企業批量管理”三種核心場景,提供對應的部署方案,均以 24.03-lts-sp2 版(生產首選)為例。
2.1 快速部署(最簡測試場景)
適合臨時驗證環境、測試軟件兼容性、學習 openEuler 命令等場景,一鍵啟動交互式容器:
# 啟動容器并進入命令行,命名為 openeuler-test(指定架構加 --platform)
docker run -it --name openeuler-test openeuler/openeuler:24.03-lts-sp2 /bin/bash
核心參數說明
-it:交互式運行(保持終端連接,能直接輸入命令)--name openeuler-test:給容器指定固定名稱,后續停止、重啟不用記容器 ID/bin/bash:啟動后默認進入 Bash 命令行(openEuler 默認 Shell)- 特殊架構需加
--platform=linux/arm64等參數,與拉取時一致
基礎操作演示
進入容器后,可執行以下命令熟悉 openEuler 特性:
# 查看系統版本(確認是 24.03-lts-sp2 版)
cat /etc/openEuler-release
# 查看架構信息(確認與服務器架構匹配)
arch
# 安裝基礎工具(測試 dnf 包管理器)
dnf install -y vim wget net-tools
# 驗證云原生工具兼容性(安裝 docker 客戶端測試)
dnf install -y docker-client
docker --version
# 退出容器:臨時退出(容器繼續運行)按 Ctrl+P+Q;完全退出(停止容器)輸入 exit
2.2 掛載目錄部署(推薦生產場景)
通過宿主機目錄掛載,實現“數據持久化、配置獨立管理、日志分離”——即使容器意外刪除,業務數據和配置也不會丟失,適合生產環境部署服務。
第一步:創建宿主機掛載目錄
根據實際需求創建“數據目錄”(存業務數據)、“配置目錄”(存服務配置)、“日志目錄”(存運行日志),路徑以 /data/openeuler 為例:
# 一次性創建三個核心目錄
mkdir -p /data/openeuler/{data,conf,logs}
# 授權目錄(避免容器內用戶無讀寫權限,生產環境可按實際用戶組調整)
chmod -R 777 /data/openeuler
第二步:啟動容器并掛載目錄
docker run -d --name openeuler-prod \
-p 2222:22 \ # 映射 SSH 端口(遠程管理容器內服務)
-p 8080:80 \ # 映射 HTTP 端口(部署 Web 服務用)
-v /data/openeuler/data:/var/data \ # 數據目錄掛載(存業務數據)
-v /data/openeuler/conf:/etc/custom \ # 配置目錄掛載(存服務配置)
-v /data/openeuler/logs:/var/log/custom \ # 日志目錄掛載(存運行日志)
-e TZ=Asia/Shanghai \ # 設置時區(解決容器默認 UTC 時區問題)
--platform=linux/arm64 \ # 按服務器架構調整(如 x86 用 amd64)
openeuler/openeuler:24.03-lts-sp2 \
# 后臺運行命令(確保容器不退出,這里以啟動 crond 定時任務為例)
/bin/bash -c "dnf install -y crontabs && crond -n"
目錄映射說明
| 宿主機目錄 | 容器內目錄 | 核心用途 |
|---|---|---|
/data/openeuler/data |
/var/data |
存放業務數據(如數據庫文件、應用數據) |
/data/openeuler/conf |
/etc/custom |
存放自定義配置(如服務啟動腳本、環境變量) |
/data/openeuler/logs |
/var/log/custom |
存放應用日志(如服務運行日志、錯誤日志) |
進入運行中的容器
部署后如需操作容器(如安裝服務、修改配置),執行以下命令:
# 進入已啟動的 openeuler-prod 容器
docker exec -it openeuler-prod /bin/bash
2.3 Docker Compose 部署(企業級批量管理)
適合多服務組合場景(如 openEuler + Nginx + MySQL),通過 docker-compose.yml 配置文件統一管理,支持一鍵啟停、批量部署,運維效率更高。
第一步:創建 docker-compose.yml 配置文件
在 /data/openeuler-compose 目錄下創建配置文件(路徑可自定義):
version: '3.8' # 適配 Docker Compose 新版本特性
services:
openeuler:
image: openeuler/openeuler:24.03-lts-sp2 # 使用的 openEuler 鏡像
container_name: openeuler-service # 容器名稱(固定,方便管理)
platform: linux/arm64 # 按服務器架構調整(amd64/arm64/loongarch64)
ports:
- "2222:22" # SSH 端口映射(遠程管理)
- "8080:80" # HTTP 端口映射(部署服務用)
volumes:
- ./data:/var/data # 數據目錄(相對路徑,與 yml 文件同目錄)
- ./conf:/etc/custom # 配置目錄
- ./logs:/var/log/custom # 日志目錄
environment:
- TZ=Asia/Shanghai # 時區配置(上海時區,避免日志時間偏差)
- LANG=en_US.UTF-8 # 字符集配置(避免中文亂碼)
restart: always # 容器故障自動重啟(保障服務高可用)
command: /bin/bash -c "dnf install -y openssh-server && /usr/sbin/sshd -D" # 啟動 SSH 服務
第二步:創建配套目錄并啟動服務
# 1. 創建與配置文件對應的目錄(data、conf、logs)
mkdir -p /data/openeuler-compose/{data,conf,logs}
cd /data/openeuler-compose # 進入配置文件所在目錄
# 2. 啟動服務(后臺運行,-d 表示 detached 模式)
docker compose up -d
# 3. 常用管理命令(按需使用)
docker compose ps # 查看服務狀態(是否正常運行)
docker compose stop # 停止服務(容器保留,數據不丟失)
docker compose down # 停止并刪除容器(掛載目錄數據仍在)
docker compose logs -f # 實時查看容器日志(排查問題用)
docker compose restart # 重啟服務(配置修改后生效)
3. 部署結果驗證
通過以下三步,確認 openEuler 容器正常運行且核心功能(架構適配、數據持久化、服務可用性)可用:
3.1 基礎狀態驗證
# 查看容器是否在運行(STATUS 列顯示 Up 即為正常)
docker ps | grep openeuler
# 查看容器資源占用(確認 CPU、內存無異常占用,符合資源規劃)
docker stats openeuler-prod # 按 Ctrl+C 退出統計
3.2 環境功能驗證
# 1. 進入容器(以 openeuler-prod 為例)
docker exec -it openeuler-prod /bin/bash
# 2. 驗證包管理器與依賴(安裝 Web 服務依賴)
dnf install -y gcc pcre-devel zlib-devel
ldconfig -p | grep pcre # 確認依賴已安裝
# 3. 驗證掛載目錄同步(容器內創建文件,宿主機查看是否存在)
echo "openEuler production data" > /var/data/test.txt
exit # 退出容器
# 4. 宿主機驗證掛載(確認文件同步,說明掛載生效)
cat /data/openeuler/data/test.txt
3.3 服務訪問驗證
若部署時映射了 80 端口且安裝了 Nginx,可通過以下命令驗證服務連通性:
# 1. 容器內安裝并啟動 Nginx
docker exec -it openeuler-prod dnf install -y nginx
docker exec -it openeuler-prod systemctl start nginx
# 2. 宿主機訪問 Nginx 服務
curl http://127.0.0.1:8080
若輸出 Nginx 歡迎頁內容,說明服務部署正常且端口映射生效。
4. 常見問題排查
4.1 拉取鏡像時提示“架構不支持”
原因:指定的架構與鏡像支持的架構不匹配,比如給 loongarch64 服務器拉取了僅支持 ARM64 的鏡像。
解決方案:參考軒轅鏡像頁面的“支持架構”說明,拉取對應架構鏡像,示例:
# 龍芯服務器拉取 loongarch64 架構鏡像
docker pull --platform=linux/loongarch64 openeuler/openeuler:24.03-lts-sp2
4.2 容器內 dnf 安裝軟件速度慢
原因:默認用官方源,國內訪問速度慢。
解決方案:切換為國內鏡像源(以華為云為例):
# 容器內執行
echo -e "[base]\nname=openEuler-24.03-LTS-SP2 - Base - repo.huaweicloud.com\nbaseurl=https://repo.huaweicloud.com/openeuler/openEuler-24.03-LTS-SP2/OS/\$basearch/\nenabled=1\ngpgcheck=1\ngpgkey=https://repo.huaweicloud.com/openeuler/openEuler-24.03-LTS-SP2/OS/\$basearch/RPM-GPG-KEY-openEuler" > /etc/yum.repos.d/base.repo
dnf clean all && dnf makecache
4.3 容器內時區與本地差 8 小時
原因:容器默認使用 UTC 時區,未配置本地時區。
解決方案:
- 啟動時加
-e TZ=Asia/Shanghai(永久生效,推薦):docker run -d -e TZ=Asia/Shanghai --name openeuler-test openeuler/openeuler:24.03-lts-sp2 - 已啟動容器臨時修改(重啟后失效):
docker exec -it openeuler-test /bin/bash ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime date # 驗證時區是否正確
4.4 掛載目錄后“權限被拒絕”
原因:宿主機目錄權限不足,或容器內用戶無讀寫權限。
解決方案:
# 1. 宿主機給目錄授權(生產環境可按實際用戶組調整,測試用 777)
chmod -R 777 /data/openeuler
# 2. 啟動時指定 root 用戶(確保權限足夠)
docker run -d -u root --name openeuler-prod -v /data/openeuler:/var/data openeuler/openeuler:24.03-lts-sp2
4.5 容器啟動后立即退出(狀態碼 137)
原因:openEuler 鏡像精簡,默認無后臺運行進程,容器啟動后無任務可執行。
解決方案:啟動時指定后臺運行命令,比如:
docker run -d --name openeuler-test openeuler/openeuler:24.03-lts-sp2 /bin/bash -c "while true; do sleep 3600; done"
結尾
至此,你已掌握 openEuler 的 Docker 部署全流程——從鏡像拉取的架構匹配、版本選擇,到適配不同場景的部署方案,再到實際問題的排查技巧,每個步驟都貼合企業級運維需求。

openEuler 作為華為主導的開源 Linux 發行版,以“多架構適配、云原生友好、長期穩定支持”為核心優勢,在企業級服務器、邊緣計算、云原生場景中應用廣泛。通過 Docker 部署 openEuler,能將其系統優勢與容器化的“環境一致、輕量高效、快速遷移”特性深度結合,徹底解決傳統部署中“架構適配繁瑣、版本管理混亂、跨環境遷移難”的痛點。
浙公網安備 33010602011771號