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),顺序颠倒会无效。