返回文章列表

在 Red Hat 7 實踐 Oracle Linux 容器化部署

本文闡述在 Red Hat Enterprise Linux 7 環境中部署 Oracle Linux 容器的完整流程。內容涵蓋於 Amazon EC2 實例上準備主機環境、安裝與啟動 Docker 服務,並詳細說明如何從 Docker Hub 獲取 Oracle Linux

容器化技術 系統管理

將傳統企業級作業系統(如 Oracle Linux)容器化,是現代化 IT 架構的關鍵實踐。此方法不僅能提升資源利用率與部署彈性,更能簡化開發、測試與生產環境的一致性管理。本篇文章以 Red Hat Enterprise Linux 7 作為主機環境,系統性地拆解了從零開始準備 Docker 基礎設施,到成功獲取 Oracle Linux 容器映像檔的技術步驟。此過程展示了如何整合雲端平台、容器引擎與企業級作業系統,為複雜應用程式的遷移與部署提供一個標準化且可複製的範本。

在 Red Hat 7 上部署 Oracle Linux 容器:從環境準備到映像檔獲取

建立容器化 Linux 環境的先決條件

在本章節中,我們將深入探討如何在 Docker 容器內運行一個完整的 Linux 作業系統,具體以 Oracle Linux 為例。為了順利進行,需要滿足以下幾個關鍵的軟硬體要求:

  • Docker 引擎:必須安裝並運行 Docker。本範例中使用的版本是 1.8.x,但較新版本通常也兼容。
  • Oracle Linux Docker 映像檔:需要一個預先構建好的 Oracle Linux Docker 映像檔。這個映像檔可以從 Docker Hub 或其他 Docker 映像檔倉庫獲取。
  • 主機 Linux 作業系統:運行 Docker 的主機作業系統。本範例採用了 Amazon EC2 上的 Red Hat Enterprise Linux 7.1 (HVM) 映像檔(AMI ID: ami-12663b7a),並搭配 SSD 磁碟以獲得良好的 I/O 效能。

設定主機環境:EC2 Red Hat 實例的準備

我們將使用 Amazon EC2 作為部署 Docker 的雲端基礎設施。

  1. 啟動 EC2 實例:選擇 Red Hat Enterprise Linux 7.1 (HVM) AMI,並啟動一個 EC2 實例。請記住分配的公用 IP 地址,因為它將用於 SSH 連線。
  2. SSH 連線:使用 SSH 客戶端連線到 EC2 實例。由於 Red Hat 實例的預設使用者是 ec2-user,並且我們假設您已經生成並擁有私鑰檔案 docker.pem,SSH 命令如下:
    ssh -i "docker.pem" ec2-user@<YOUR_EC2_PUBLIC_IP>
    
    請將 <YOUR_EC2_PUBLIC_IP> 替換為您 EC2 實例的實際公用 IP 地址(範例中為 54.165.251.73,但實際 IP 會因使用者而異)。

安裝與啟動 Docker 服務

在成功連線到 Red Hat 7 EC2 實例後,需要確保 Docker 引擎已安裝並運行。

  1. 安裝 Docker:如果尚未安裝 Docker,請參考第一章的指引,使用 yum 或安裝腳本來完成安裝。
  2. 啟動 Docker 服務:使用以下命令啟動 Docker 服務:
    sudo service docker start
    
    如果啟動成功,您應該會看到一個 “OK” 的訊息。
  3. 驗證 Docker 狀態:為了確認 Docker 服務已成功運行並準備就緒,執行以下命令:
    sudo service docker status
    
    檢查輸出結果,確保 Active: 欄位顯示為 active (running)。這表示 Docker 守護進程(daemon)已經啟動,可以開始部署容器化的應用程式和作業系統了。

獲取 Oracle Linux Docker 映像檔

在 Docker 中運行 Oracle Linux 的前提是獲取其對應的 Docker 映像檔。Docker Hub 是最常見的映像檔來源。

使用 docker pull 下載映像檔

我們將使用 docker pull 命令從 Docker Hub 下載名為 oraclelinux 的映像檔。這個映像檔包含了運行 Oracle Linux 所需的基礎環境。

sudo docker pull oraclelinux

執行此命令後,Docker 會連接到 Docker Hub,查找 oraclelinux 映像檔,並下載其所有必需的層級(layers)。下載進度會顯示在終端介面。如果映像檔有不同的標籤(tags),預設會下載 latest 標籤的版本。

映像檔的結構與標籤

Docker 映像檔是分層構建的,每一層代表一個操作(例如安裝軟體、複製檔案)。docker pull 命令會按順序下載這些層級。映像檔的標籤(如 latest7.x 等)用於區分同一映像檔的不同版本。在生產環境中,建議使用具體的版本標籤(例如 oraclelinux:7)來確保部署的可預測性。

映像檔管理與容器啟動準備

在下載了 Oracle Linux 映像檔後,可以進行一些基本的管理操作,並為後續啟動容器做準備。

列出本地 Docker 映像檔

為了確認 oraclelinux 映像檔已成功下載到本地,可以使用 docker images 命令。

sudo docker images

這個命令會列出所有本地儲存的 Docker 映像檔,包括它們的名稱、標籤、映像檔 ID、創建時間和大小。您應該能在列表中看到 oraclelinux 映像檔。

預覽容器啟動選項

在實際啟動容器之前,了解 docker run 命令的常用選項至關重要。我們將在後續章節中詳細介紹,但在此先預告幾個與運行 Linux 容器相關的關鍵選項:

  • -i (interactive):保持 STDIN 打開,允許與容器進行互動。
  • -t (tty):分配一個偽終端(pseudo-TTY),這使得我們能夠獲得一個類似於傳統終端機的交互式 Shell 環境。
  • -d (detached):在後台運行容器,不佔用當前終端。
  • --name:為容器指定一個易於識別的名稱。

這些選項將幫助我們在容器內創建一個可操作的 Oracle Linux 環境。

@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_

skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100

object "使用者" as User
object "SSH Client" as SSHClient
object "EC2 Instance (RHEL 7)" as RHELInstance
object "Docker Service" as DockerService
object "Docker CLI" as DockerCLI
object "Docker Daemon" as DockerDaemon
object "Docker Hub" as DockerHub
object "Docker Image (oraclelinux)" as OracleLinuxImage

partition "Oracle Linux 容器化環境準備" {
  User --> SSHClient : 準備私鑰 (docker.pem) 並輸入連線指令
  SSHClient --> RHELInstance : 建立 SSH 連線 (ec2-user@<IP>)
  RHELInstance --> SSHClient : 顯示終端提示符
  User --> RHELInstance : 執行 sudo service docker start
  DockerService --> RHELInstance : 啟動 Docker 服務
  User --> RHELInstance : 執行 sudo service docker status
  DockerService --> RHELInstance : 回傳服務狀態 (Active: active (running))
  User --> DockerCLI : 執行 docker pull oraclelinux
  DockerCLI --> DockerDaemon : 請求下載映像檔
  DockerDaemon --> DockerHub : 從 Docker Hub 獲取 oraclelinux 映像檔
  DockerHub --> DockerDaemon : 提供映像檔數據
  DockerDaemon --> User : 回傳下載進度與完成訊息
  User --> DockerCLI : 執行 docker images
  DockerCLI --> DockerDaemon : 請求列出本地映像檔
  DockerDaemon --> User : 顯示映像檔列表 (含 oraclelinux)
  note right of User : 準備進入下一階段:\n啟動 Oracle Linux 容器。
}

end note

@enduml

看圖說話:

此圖示描繪了為在 Docker 容器中運行 Oracle Linux 所需的環境準備與映像檔獲取流程。首先,使用者透過 SSH Client 連線到 Amazon EC2 上的 Red Hat Enterprise Linux 7 實例,這需要使用私鑰 (docker.pem) 和實例的公用 IP 地址。成功登入後,使用者執行 sudo service docker start 命令來啟動 Docker 服務,並通過 sudo service docker status 確認服務已成功運行(顯示 active (running) 狀態)。接下來,使用者利用 Docker CLI 執行 docker pull oraclelinux 命令,請求 Docker Daemon 從 Docker Hub 下載 Oracle Linux 的 Docker 映像檔。Docker Daemon 會與 Docker Hub 互動,獲取映像檔數據,並將其下載到本地。下載完成後,使用者可以執行 docker images 命令,Docker CLI 會查詢 Docker Daemon,列出所有本地已儲存的映像檔,其中應包含剛下載的 oraclelinux 映像檔。圖示的最後部分提示使用者已準備好進入下一階段,即啟動 Oracle Linux 容器。

縱觀現代企業 IT 架構的演進軌跡,將 Oracle Linux 這類傳統核心系統容器化,不僅是單純的技術操作,更代表著一種基礎設施的思維轉變與能力升級。

深入剖析此部署流程可以發現,相較於傳統虛擬機模式,容器化顯著提升了資源利用率與環境一致性,為敏捷開發與持續整合奠定了標準化基礎。然而,真正的挑戰並非文章所示的環境準備與映像檔獲取,這些僅是技術實現的第一步。管理者須意識到,關鍵瓶頸在於如何將此模式無縫整合至既有的維運流程、安全規範與資料治理框架中,並確保團隊具備相應的雲原生技能。從理念到日常實踐的落地過程,需要克服的組織慣性與技術債務,遠比單次部署複雜。

掌握在 Red Hat 環境中部署標準化 Linux 容器的能力,實質上是取得了進入更廣闊雲原生生態系的入場券。未來,圍繞此基礎技能構建的,將是涵蓋自動化編排、服務網格與微服務架構的複雜應用系統。

玄貓認為,高階管理者應將此類基礎建設的部署,視為提升團隊技術敏捷性與建構未來創新平台的策略性投資,而非單純的技術導入任務,其長期價值在於為企業數位轉型鋪設了堅實的第一哩路。