Alibaba Cloud Linux 3 基于 Red Hat Enterprise Linux (RHEL) 兼容內核,安裝 Docker 的步驟與 RHEL/CentOS 系列類似,以下是具體操作:
1. 卸載舊版本(如有)
sudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
2. 安裝必要依賴
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
命令解析:
(1)?sudo
以超級用戶(root)權限執行后續命令。安裝系統軟件通常需要 root 權限,sudo
?用于臨時提升當前用戶的權限。
(2)?dnf
Red Hat 系 Linux 系統的新一代包管理工具(全稱為 Dandified YUM),用于管理軟件包的安裝、更新、卸載等操作,替代了傳統的?yum
?工具(但語法兼容?yum
)。
(3)install
dnf
?的子命令,作用是安裝指定的軟件包。
(4)-y
dnf
?的可選參數,全稱?--assumeyes
,表示在安裝過程中自動回答 “yes”(確認安裝),無需用戶手動輸入確認,適合自動化腳本或希望快速安裝的場景。
(5) 軟件包名稱(三個依賴包)
-
yum-utils
:
提供了一系列與?yum/dnf
?相關的輔助工具(如?yum-config-manager
),用于管理軟件倉庫(添加 / 刪除倉庫、啟用 / 禁用倉庫等),在安裝 Docker 時用于添加 Docker 官方倉庫。 -
device-mapper-persistent-data
:
設備映射器(Device Mapper)的持久化數據工具包。設備映射器是 Linux 內核中的存儲管理框架,Docker 的部分存儲驅動(如?devicemapper
)依賴此工具實現存儲設備的映射和管理。 -
lvm2
:
邏輯卷管理(LVM,Logical Volume Manager)工具集,提供對磁盤分區的高級管理功能(如動態調整分區大小、合并多個磁盤等)。Docker 在使用某些存儲驅動(如基于 LVM 的?devicemapper
?模式)時需要依賴此工具。
整體作用
這條命令的目的是以 root 權限自動安裝 Docker 所需的基礎依賴包,為后續添加 Docker 倉庫、安裝 Docker 引擎做準備。這些依賴包主要用于支持軟件倉庫管理和 Docker 存儲驅動的正常運行。
3. 添加 Docker 官方倉庫
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Alibaba Cloud Linux 3 兼容 CentOS 倉庫,因此使用 CentOS 的 Docker 源
補充說明
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo Curl error (35): SSL connect error for https://download.docker.com/linux/centos/docker-ce.repo [OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to download.docker.com:443 ]
Error: Configuration of repo failed
若遇到倉庫訪問問題,可替換為阿里云鏡像源加速(推薦):
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' {"registry-mirrors": ["https://你的阿里云加速器地址"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
阿里云鏡像加速器地址可在?阿里云容器鏡像服務?中獲取。
- 登錄?阿里云容器鏡像服務(需阿里云賬號)
- 在左側菜單找到「鏡像加速器」,獲取專屬加速地址(格式類似?
https://xxxx.mirror.aliyuncs.com
)
4、安裝 Docker 引擎
sudo dnf install -y docker-ce docker-ce-cli containerd.io
5. 啟動 Docker 并設置開機自啟
sudo systemctl start docker # 啟動服務
sudo systemctl enable docker # 設置開機自啟
sudo systemctl status docker # 查看服務狀態(可選)
6. 驗證安裝
運行測試鏡像確認 Docker 正常工作:
sudo docker run hello-world
若成功,會輸出 "Hello from Docker!" 等信息,表明安裝完成。
7. (可選)配置非 root 用戶使用 Docker
默認需要?sudo
?權限,如需允許當前用戶直接使用 Docker:
sudo usermod -aG docker $USER
設置后需?注銷并重新登錄?生效。
8.?容器命令
(1) docker container run -d --name? webserver?-p 80:8080?nigelpoulton/pluralsight-docker-ci
基于?nigelpoulton/pluralsight-docker-ci
?鏡像啟動一個后臺運行的容器
docker container run
?: 核心命令,用于創建并啟動一個新容器(等價于簡化寫法?docker run
)
-d:--detach
?的縮寫,表示容器啟動后在后臺運行(不占用當前終端),終端會返回容器的 ID(方便后續管理)。
-p 80:8080:
端口映射配置,格式為?主機端口:容器端口
:
- 主機端口?
80
:表示宿主機(你的 Linux 服務器)對外開放的端口。 - 容器端口?
8080
:表示容器內部應用實際運行的端口(該鏡像中的 Web 服務默認在 8080 端口提供服務)。 - 效果:外部訪問宿主機的?
80
?端口時,請求會自動轉發到容器內的?8080
?端口,從而訪問到容器中的 Web 服務。
(2) docker container run -it ubuntu /bin/bash? ?
基于?ubuntu
?鏡像啟動一個交互式的容器,并進入容器的?bash
?終端
-it :兩個選項的組合,是進入容器交互式終端的關鍵:
-i
(--interactive
):保持容器的標準輸入(STDIN)打開,確保你能向容器輸入命令。-t
(--tty
):為容器分配一個偽終端(類似終端窗口),讓你能像操作普通終端一樣與容器交互。
兩者結合(-it
)的效果是:創建一個可交互的終端環境,讓你能直接在容器內輸入命令(如?ls
、pwd
?等)。
(3)docker container ls?
列出當前正在運行的容器的命令,可以簡寫為更常用的?docker ps
(兩者功能完全一致,ps
?是 "process status" 的縮寫,類比 Linux 中的?ps
?命令)。
常用選項
-
-a
?或?--all
:顯示所有容器(包括已停止的,不僅僅是運行中的)。
示例:docker container ls -a
?或?docker ps -a
-
-q
?或?--quiet
:只顯示容器的 ID(常用于批量操作,如刪除所有容器?docker rm $(docker ps -aq)
)。
示例:docker container ls -q
?或?docker ps -q
-
-l
?或?--latest
:只顯示最近創建的一個容器(無論是否運行)。
(4)docker container exec??
Docker 中用于在正在運行的容器內執行命令的核心命令,常用于在不停止容器的情況下,臨時操作容器內部環境(如進入終端、查看文件、運行腳本等)
(5) docker container stop 停止運行中的容器,并將狀態置為Exited(0)。
(6)docker container start 重啟處于停止(Exited)狀態的容器
(7)docker container rm 刪除停止的容器
推薦使用docker container stop停止容器,再使用 docker container rm刪除
9、Ctrl-PQ? 斷開shell和容器終端之間的連接,并再推出后保持容器再后臺運行。
?注意事項
- 僅適用于 “交互式終端”:
Ctrl+P+Q
?只在通過?-it
?選項創建的偽終端中生效(如?bash
/sh
),若未加?-it
(如直接執行?docker exec 容器名 ls
),則無法使用該快捷鍵。- 避免按錯順序:必須是?
Ctrl+P
?后接?Ctrl+Q
(實際操作中按住 Ctrl 不放,依次按 P、Q),順序顛倒會無效。