Docker 入门第一课:从架构、云服务器到安装完成
Docker 速通系列第 1 篇
本文合并课程:02|Docker 架构与容器化、03|购买云服务器、04|停机不收费、05|安装 Docker
刚开始学 Docker 时,很多人会直接背命令:docker pull、docker run、docker ps。命令暂时能跑,但只要换一台机器,或者遇到镜像、端口、服务启动问题,就不知道该从哪里查。
这一篇我们先把地基打好。你会弄清 Docker CLI、Docker Daemon、Image 和 Container 的关系,然后准备一台 Linux 云服务器,最后按照 Docker 官方方式完成安装和验证。
先看结论
先记住这条主线:
text
你输入命令
→ Docker CLI 把请求交给 Docker Daemon
→ Docker Daemon 拉取或读取 Image
→ Docker Daemon 根据 Image 创建 Container
Image 是只读模板,Container 是镜像启动后的运行实例。Registry 用来保存和分享镜像,Docker Hub 是常见的公共 Registry。

图:Docker CLI 负责接收命令,真正创建和管理容器的是 Docker Daemon。
Docker 到底由什么组成?
一台安装并运行 Docker Engine 的机器,通常叫 Docker Host。我们先认识三个核心角色。
Docker CLI:你使用的命令入口
平时输入的 docker 命令属于 Docker CLI,也就是命令行客户端。例如:
bash
docker pull nginx
docker run nginx
CLI 本身不负责运行容器。它会通过 Docker API 把请求发给 Docker Daemon。
Docker Daemon:真正干活的后台服务
Docker Daemon 的进程名是 dockerd。它负责管理镜像、容器、网络和数据卷。
你执行 docker run nginx 时,Daemon 会检查本地有没有需要的镜像。本地没有时,它通常会先从配置的 Registry 拉取镜像,然后再创建容器。
Registry:保存镜像的仓库服务
Registry 可以理解为镜像的集中存放位置。Docker Hub 是 Docker 默认使用的公共 Registry,企业也可以使用私有 Registry。
这里还要区分两个词:
- Registry:提供镜像存储和分发服务的平台。
- Repository:Registry 中用于组织某一组相关镜像的仓库。
Image 和 Container 有什么区别?
这个区别一定要先弄懂。
Image:创建容器的只读模板
Image(镜像)通常包含应用程序、依赖、文件系统和默认启动配置。你可以把它理解成一份可重复使用的应用模板。
text
nginx:latest
redis:latest
mysql:8.4
标签是镜像名称的一部分。没有写标签时,Docker 默认使用 latest,但 latest 只是一个标签名,不保证永远代表最新版本。
Container:镜像的运行实例
Container(容器)是镜像启动后的可运行实例:
bash
docker run nginx
同一个镜像可以创建多个容器。它们使用相同模板启动,但各自拥有独立的运行状态和默认可写层。

图:Image 是可重复使用的模板,Container 是由模板创建的运行实例。
容器不是一台完整虚拟机。它可以拥有独立的进程、网络、挂载和资源限制,但底层仍与宿主机共享内核。
为什么还需要容器化?
如果把多个应用直接安装在同一套操作系统里,它们可能依赖不同版本的软件包,也可能争抢 CPU、内存和端口。时间一长,环境就很难维护。
虚拟机能提供更完整的隔离,但每台虚拟机通常需要自己的操作系统,启动和资源开销更大。
容器化提供了另一种选择:
- 把应用和依赖一起打包。
- 为应用提供相对隔离的运行环境。
- 共享宿主机内核,启动通常更快。
- 同一个镜像可以在不同 Docker 主机上重复运行。
注意,"使用容器"不等于"天然绝对安全"。生产环境仍要配置资源限制、网络边界、最小权限和镜像更新策略。
准备一台 Linux 云服务器
如果你已经有 Linux 机器,可以直接跳到安装部分。没有本地 Linux 环境时,可以使用阿里云轻量应用服务器完成这一组实验。
入门配置怎么选?
本文使用下面这套实际配置:
- 产品:阿里云轻量应用服务器
- 地域:华南 3(广州)
- 计费方式:包年包月,购买 12 个月
- CPU:2 vCPU
- 内存:2 GiB
- 系统盘:40 GiB
- 系统镜像:Ubuntu 24.04
- 公网网络:1 个 IPv4 地址,200 Mbps 峰值 BGP 公网带宽
- 流量:购买页显示"不限流量"
截图中的优惠价格是 12 个月 ¥68,原价显示为 ¥459。活动价格、可购买次数、地域和套餐内容可能变化,请以实际下单页和服务协议为准。阿里云官方说明:轻量应用服务器套餐采用包年包月计费;购买页显示"无固定流量"时,不产生超额流量费用。
这套配置足够完成 Nginx、镜像、容器和 Docker Hub 入门实验,但它不是生产环境容量建议。
操作系统怎么选?
原课程使用 CentOS 7.9 演示,但 CentOS Linux 7 已在 2024 年 6 月 30 日结束维护,不适合继续作为新服务器的默认选择。
本文使用 Ubuntu 24.04 LTS 演示。你也可以选择 Docker 官方当前支持的其他 Linux 版本,但安装命令要跟着发行版调整。
轻量服务器防火墙只放行需要的端口
阿里云轻量应用服务器控制台使用"防火墙"管理公网访问规则。你可以把它理解成服务器外层的端口访问清单。基础实验常见端口包括:
22:SSH 登录80:HTTP443:HTTPS8080、8081:后续 Nginx 端口映射实验
不要为了省事开放所有端口。实验需要哪个端口,就只放行哪个端口,并限制来源范围。
创建实例时检查什么?
提交订单前,逐项确认:
text
[ ] 阿里云轻量应用服务器
[ ] 华南 3(广州)
[ ] 包年包月 12 个月
[ ] Ubuntu 24.04
[ ] 2 vCPU / 2 GiB / 40 GiB 系统盘
[ ] 购买页显示不限流量
[ ] 已分配公网 IP
[ ] 轻量服务器防火墙已放行 SSH 端口
[ ] 登录凭据已安全保存
[ ] 已确认是否开启自动续费
不要把真实密码、访问令牌或私钥写进文章、截图和代码仓库。
使用 SSH 连接服务器
实例创建完成后,复制当前公网 IP。常见连接命令是:
bash
ssh root@你的公网IP
有些云镜像默认使用 ubuntu 等普通用户:
bash
ssh ubuntu@你的公网IP
第一次连接时,SSH 会显示服务器指纹。先确认 IP 和实例信息无误,再接受指纹。
登录后执行:
bash
whoami
cat /etc/os-release
uname -m
这三条命令分别确认当前用户、Linux 发行版和 CPU 架构。先确认环境,再复制安装命令。
包年包月服务器关机能省套餐费用吗?
不能。本文使用的是阿里云轻量应用服务器包年包月套餐,费用在购买时按使用期限预先支付。你手动关机以后,套餐有效期仍然继续计算,不会因为服务器进入"已停止"状态而暂停或按小时退款。
这里要区分"运行状态"和"计费周期":
- 运行中:服务器可以接受 SSH 和网页访问。
- 已停止:服务中断,但包年包月套餐仍在有效期内。
- 已到期:实例自动停机并进入数据保留期。
- 到期后未续费:超过官方保留期限,实例、快照和自定义镜像可能被自动释放且无法恢复。

图:手动关机只改变运行状态,不会暂停包年包月套餐的有效期。
阿里云当前说明中,轻量应用服务器到期后会自动停机,数据保留 15 天;如果仍未续费,服务器及其快照和自定义镜像会被永久删除。不要把这 15 天当成备份方案,重要数据应该提前导出。
这类轻量应用服务器默认配置一个公网 IP,阿里云当前说明是该 IP 不支持更换,实例到期后也不能保留。普通的手动停止和再次启动不会因为这个操作自动换 IP;如果更换了服务器实例,才需要同步更新 SSH 和域名解析。
text
运行中 → 手动停止 → 套餐周期继续 → 再次启动
到期未续费 → 停机保留 15 天 → 仍未续费 → 资源和数据释放
在 Ubuntu 24.04 安装 Docker Engine
下面使用 Docker 官方 apt 软件源安装。命令需要管理员权限。
第一步:移除可能冲突的软件包
bash
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
sudo apt-get remove -y "$pkg"
done
全新服务器通常没有这些包。看到某个包未安装,不影响后续步骤。
第二步:添加 Docker 官方软件源
bash
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
接着写入软件源配置:
bash
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt-get update
不要从来源不明的网站复制一键安装脚本。软件源地址和 GPG 密钥都应该来自 Docker 官方域名。
第三步:安装 Docker Engine
bash
sudo apt-get install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
这些包分别提供 Docker Engine、CLI、容器运行时、Buildx 和 Compose 插件。
第四步:检查服务
bash
sudo systemctl status docker
如果服务没有运行,执行:
bash
sudo systemctl start docker
sudo systemctl enable docker
第五步:运行测试容器
bash
sudo docker version
sudo docker run --rm hello-world
hello-world 能正常输出确认信息,说明 Docker 已完成镜像拉取、容器创建和运行这条基本链路。

图:安装完成后要同时检查 Docker 服务、客户端与测试容器。
本文后续命令为了阅读简洁,会写成 docker ...。如果你还没有配置非 root 用户权限,请继续使用 sudo docker ...。
权限提醒: 把用户加入
docker组,基本等同于授予该用户宿主机上的 root 级控制能力。共享服务器上不要把不可信用户加入该组。
镜像加速需要注意什么?
Docker 默认从 Docker Hub 拉取镜像。如果所在网络访问较慢,可以使用云厂商或组织提供的可信镜像服务。
Docker Daemon 的常见配置文件是:
text
/etc/docker/daemon.json
配置示例:
json
{
"registry-mirrors": [
"https://你的可信镜像加速地址"
]
}
地址必须来自可信服务,并以当前控制台说明为准。修改后先检查 JSON 格式,再重启 Docker:
bash
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo docker ps
如果 Docker 无法启动,先查看配置和日志:
bash
sudo cat /etc/docker/daemon.json
sudo journalctl -u docker --no-pager -n 50
常见问题
浏览器访问不到容器
先不要急着重装 Docker。后续做端口映射时,需要同时检查:
- 容器是否正在运行。
docker run是否发布了正确端口。- 系统防火墙是否允许该端口。
- 阿里云轻量服务器防火墙是否允许该端口。
服务器重启后 Docker 没有运行
bash
sudo systemctl enable docker
sudo systemctl start docker
停机后 SSH 连不上
先查看实例是否已经恢复到"运行中",再确认轻量服务器防火墙是否放行 22,最后核对控制台显示的公网 IP。
命令速查表
| 目的 | 命令 |
|---|---|
| 查看系统 | cat /etc/os-release |
| 查看架构 | uname -m |
| 查看 Docker 服务 | sudo systemctl status docker |
| 启动 Docker | sudo systemctl start docker |
| 设置开机启动 | sudo systemctl enable docker |
| 查看版本 | sudo docker version |
| 运行测试容器 | sudo docker run --rm hello-world |
| 查看容器 | sudo docker ps |
总结
- Docker CLI 接收命令,Docker Daemon 负责管理镜像、容器、网络和数据卷。
- Image 是只读模板,Container 是镜像创建出的运行实例。
- 本文使用阿里云轻量应用服务器:Ubuntu 24.04、2 vCPU、2 GiB、40 GiB 系统盘。
- 轻量应用服务器是包年包月套餐,手动关机不会暂停套餐有效期。
- CentOS Linux 7 已停止维护,新环境应选择当前受支持的系统。
- 安装完成不能只看命令是否结束,还要检查服务并运行
hello-world。
官方参考
- Docker 架构概览
- Docker Engine 安装总览
- 在 Ubuntu 上安装 Docker Engine
- CentOS Linux 生命周期
- 阿里云轻量应用服务器计费概述
- 阿里云轻量应用服务器续费和到期说明
Docker 速通系列:
- Docker 架构、云服务器与安装
- Docker 镜像操作
- Docker 容器操作
docker run详解- Docker 镜像保存与迁移
- 分享镜像到 Docker Hub
- Docker 实验小结