从干净的 Ubuntu Server 开始,用 Docker 官方 apt 源安装 Docker Engine 和 Compose 插件,然后用服务状态、测试容器和 Nginx 响应逐项验证。
完整命令与配置
按教程顺序逐段操作。命令清单是 Markdown 参考稿,包含说明和 Compose 配置。
确认系统版本
以 Ubuntu 26.04 LTS amd64 为例,通过 Docker 官方 apt 源安装 Docker Engine 和 Compose 插件。先运行 cat /etc/os-release 确认版本为 26.04、代号为 resolute。
cat /etc/os-release
检查冲突包
干净系统可能报告旧包均未安装。若用 snap list 确认装了 Docker Snap,先运行 sudo snap remove docker。
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)
添加 Docker 官方 apt 源
整段复制软件源定义,保留最后一行 EOF。这次 Docker 官方源可达。Ubuntu 基础源与这里添加的 Docker 源分别配置。
# 下载 Docker 的签名密钥
sudo apt update
sudo apt install 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
# 写入软件源(整段复制)
sudo tee /etc/apt/sources.list.d/docker.sources <<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 update
安装和验证
查看服务状态后按 q 回到命令行,再运行 hello-world。看到 Client 和 Server、active (running) 及 Hello from Docker! 后,可分别确认服务连接、运行状态和镜像执行。
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo docker version docker compose version sudo systemctl status docker sudo docker run hello-world
将当前账号加入 docker 组
Docker 组具有相当于 root 的权限。只把可信账号加进去。运行后退出并重新登录,然后用 docker ps 验证。
sudo usermod -aG docker $USER
用 Compose 运行 Nginx
在虚拟机中运行 mkdir ~/hello-compose && cd ~/hello-compose,然后用 nano compose.yaml 保存下面的内容。运行后查看 docker compose ps 是否为 Up,HTTP 响应是否为 200 OK。发布的容器端口可能绕过 UFW 规则。
services:
web:
image: nginx:alpine
ports:
- "8080:80"
docker compose up -d docker compose ps curl -I http://localhost:8080 docker compose down
官方资料与离线包
离线包适用于 Ubuntu 26.04 amd64。核对 SHA-256 后,在安装包所在目录运行 sudo apt install ./*.deb。如果尚缺 Ubuntu 依赖包,仍需由 Ubuntu 软件源提供。用 docker load -i hello-world.tar 或 docker load -i nginx-alpine.tar 导入对应镜像。
Ubuntu 26.04 amd64 离线包和校验清单(OneDrive) ↗
只读分享包含 5 个来自 Docker 官方源的 Ubuntu 26.04 amd64 deb 包、hello-world 与 nginx:alpine 的镜像归档、README 和 SHA256.txt。先按清单核对文件,再按 README 安装或导入。
按实际视频章节回看
- 00:00 Ubuntu 26.04 安装 Docker
- 00:31 确认系统版本
- 01:04 检查冲突包和 Snap
- 01:43 添加 Docker 官方源
- 02:45 安装 Docker 和 Compose
- 03:24 验证服务和测试容器
- 03:59 重新登录后免 sudo
- 04:42 用 Compose 跑一个网页
- 05:32 Docker 端口与 UFW
完整视频文稿
展开完整口播文稿
00:00 Ubuntu 26.04 安装 Docker
刚装好 Ubuntu 二十六点零四,怎么把 Docker 和 Compose 装起来?这期从一台干净的 Ubuntu Server 开始,先把 Docker 服务跑起来,再一步一步核对它能做什么。
总共三件事:检查旧包,从 Docker 官方源安装,最后验证服务、开机自启和免 sudo。命令我整理成了配套清单,长命令可以暂停对照。
00:31 确认系统版本
先在终端运行这条命令,看看自己用的是哪个 Ubuntu 版本。这里写着二十六点零四 LTS,代号是 resolute。这台是 amd64,也就是常见的六十四位 PC 架构。
Docker 官方已经支持这个版本。后面写软件源时会从这里读系统代号,所以不用自己猜,也不用把二十四点零四的代号照抄进来。
01:04 检查冲突包和 Snap
第一步,检查可能打架的旧包。Ubuntu 软件库里的 docker 点 io,跟接下来从 Docker 官方源装的 Docker CE 是两套包。旧版 Compose、containerd 和 runc 也在检查范围里。
我在这台干净系统上运行删除命令,看到这八项都提示找不到,最后显示移除零个包。看到这样的输出可以继续。你如果装系统时选过 Docker Snap,先用 snap list 检查。确实装了 Snap 版,才用卡片上的命令清理。
01:43 添加 Docker 官方源
第二步,给 apt 添加 Docker 的官方源。先更新 Ubuntu 的软件列表,装好证书和 curl。接下来建一个目录,把 Docker 的签名密钥下载进去,再设成可以读取。
然后把这段一起复制。开头的 tee 会把内容写进 Docker 的源文件。中间这两行,会自动读取 Ubuntu 的代号和当前机器的架构。最后一行指定刚才的密钥。apt 更新列表时,会用它核对 Docker 仓库的签名。
回车之后再运行一次 apt update。看到 download 点 docker 点 com 的 resolute 和 amd64 包列表成功读到了,这一步就完成了。如果卡在前面的 Ubuntu 更新,先看是哪一个源报错。Ubuntu 自带的包源和我们新加的 Docker 源,是两条不同的地址。
02:45 安装 Docker 和 Compose
现在安装 Docker。用这一条命令装五个包,分别是 Docker 引擎、命令行、containerd、buildx 和 Compose 插件。它问你是否继续时,检查下包名,输入 Y,回车等它装完。
装完先运行 sudo docker version。上面是 Client,也就是你敲的命令。下面是 Server,它能显示版本,说明命令已经连上 Docker 服务。再看 docker compose version。这里 docker 和 compose 中间是空格,它是 Docker 的插件。
03:24 验证服务和测试容器
接着用 sudo systemctl status docker 看服务状态。active running 表示服务正在运行,enabled 表示开机启用。在 Ubuntu 上默认就会启用,不用另外设置。看完按 q 回到终端。
然后运行 sudo docker run hello-world。第一次本机没有这张镜像,Docker 会先下载,再运行容器。这里打出了 Hello from Docker,说明这次镜像拉取和容器运行都成功了。
03:59 重新登录后免 sudo
刚才一直带着 sudo。现在不加 sudo,直接运行 docker ps。我这里先收到权限拒绝,因为这个登录会话还没有访问 Docker 套接字的权限。
安装已经创建了 docker 组,所以只要把当前用户加进去。运行这条命令,退出,再重新连上来。重新运行 docker ps,能看到容器列表的表头,这个登录会话就能用了。
不过,加入 docker 组相当于拿到了这台机器的 root 权限。只把信任的账号加进去,也别随意放开套接字权限。
04:42 用 Compose 跑一个网页
最后用 Compose 跑一个网页。先新建目录,在里面用 nano 创建 compose 点 yaml,把这几行复制进去并保存。这里定义了一个叫 web 的服务,使用 nginx 的 alpine 镜像,把容器的八十端口映射到这台虚拟机的八零八零端口。
运行 docker compose up,后面加杠 d,让它在后台启动。第一次会下载镜像。然后用 docker compose ps,能看到这个容器正在运行,再用 curl 请求本机的八零八零端口。这里返回二百,网页服务跑通了。
演示完用 docker compose down,就会停止并删除这个项目的容器。
05:32 Docker 端口与 UFW
最后说一个容易漏掉的地方。Compose 里写了端口映射,意思是把容器端口发布到宿主机。Docker 有自己的转发规则,官方文档提醒,发布出去的容器端口可能绕过你在 UFW 里设的规则。
所以先想清楚这个服务是不是要对外访问。只给同一个 Compose 项目里的其他容器用,通常就不用把端口映射出来。我们这次只在演示虚拟机里验证网页。
06:09 本期回顾和下期
这期的安装命令、Compose 文件和检查方法都整理成了配套清单。你可以在自己的测试机上再走一遍,按服务状态、镜像拉取和网页响应逐项核对。下期专门讲 Docker 拉取镜像失败怎么办。
这里是西楚极客,我们继续用 AI,把真正能运行的项目做出来。下期见。
Ubuntu + Docker 自建
第1篇 · 本期 Ubuntu 26.04 安装 Docker 和 Docker Compose。下一篇讲 Docker 拉取镜像失败。