Docker 安装与常用命令速查:Ubuntu/Debian 一次到位

Docker 安装与常用命令速查:Ubuntu/Debian 一次到位

DockerUbuntuDebian容器化
📶 入门 🧩 Docker

Docker 解决了应用环境不一致的顽疾,让部署变成了简单的拉取和启动。但在 Ubuntu 或 Debian 上敲下 apt install docker 往往是后续麻烦的开端。Docker 安装本身没有难度,真正的坑在安装源选择、权限组配置和磁盘膨胀这三件没人提醒的事上。本文将带你避开这些暗礁,一次搞定生产级别的环境配置。

部署前要知道 3 件事

  • 资源需求:根据官方文档,Docker Engine 仅需 64-bit 的内核与 CPU,相比起动辄需要 4GB 内存的 Docker Desktop,Engine 本身的开销微乎其微。
  • 源的区分:各大 Linux 发行版自带的包停留在老旧版本。想要完整的特性与生产级稳定性,必须使用官方仓库提供的版本(当前稳定版为 29.8.x 系列)。
维度系统自带源 (docker.io)Docker 官方源 (docker-ce)
版本新旧通常落后 1-3 年实时同步上游最新稳定版
Compose 支持需要单独配置独立的 Python 包原生集成 docker compose 插件
安全修复依赖发行版维护者的后撤补丁官方第一时间推送修复
推荐场景临时沙箱测试所有生产环境与个人主力机
  • 存储陷阱:Docker 默认将所有镜像、容器和卷存放在 /var/lib/docker。如果不加规划,系统盘空间很快会被吃光。

部署:3 分钟装好官方最新版

使用发行版包管理器会引入过时的依赖,我们直接通过官方 APT 仓库进行安装。这段代码在 Ubuntu 和 Debian 上通用:

# 1. 移除可能存在的老旧版本
sudo apt remove docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc

# 2. 安装依赖并添加官方 GPG 密钥
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

# 3. 写入仓库配置(Debian 系统需将链接中的 ubuntu 改为 debian)
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

# 4. 更新源并安装核心组件
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

安装完成后,输入 sudo docker run hello-world 即可验证引擎是否正常工作。

加入 docker 组等于发放 root 权限

网上的教程通常会让你执行 sudo usermod -aG docker $USER,以免去每次敲 sudo 的麻烦。千万别在生产环境这么做。

Docker 的守护进程默认以 root 身份运行,并且 docker 组的用户可以无密码直接与该 socket 通信。把普通用户加入该组,等于给了他提权的通道:只需挂载主机的根目录到一个容器里,普通用户就能任意修改系统文件。在安全审计严格的环境中,保留 sudo 前缀是必要的物理防线;如果是纯属个人的折腾机,也请明白这个动作带来的风险边界。

写入 1 个配置文件,把磁盘膨胀扼杀在摇篮

Docker 的默认配置对存储极不友好:容器的控制台日志会无限增长,镜像缓存都堆在系统盘。在刚装完系统时,立刻创建或修改 /etc/docker/daemon.json:

{
  "data-root": "/mnt/data/docker",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "20m",
    "max-file": "3"
  }
}

修改完成后执行 sudo systemctl restart docker。这两行参数限制了单个容器的日志文件上限为 20MB(最多保留 3 个滚动文件),并将核心存储目录转移到了容量更大的数据盘 /mnt/data/docker。这一步做在前面,胜过日后在磁盘报警时焦头烂额地迁移数据。

引擎开销几乎为零,2核2G 也能跑满业务

很多新手担心服务器配置太低跑不动 Docker。事实上,不带图形界面的 Docker Engine 本质上只是在管理 Linux 的 Namespace 和 Cgroups 规则。它和你的服务器之间,是业务容器在限制系统,而不是 Docker 进程在吃资源。

目前市面上的入门级云服务器(以 2026-10-02 查询的阿里云活动数据为例,2核2G 规格低至 ¥38/年)对于 Docker Engine 来说绰绰有余。只要你的应用本身不吃内存,单台 2核2G 的机器可以同时跑起 Nginx反代、个人博客系统和一个轻量级数据库。

常见问题(FAQ)

Q:为什么输入 docker-compose 提示找不到命令? 新版本中,Compose 已经从独立的 Python 脚本变成了 Docker CLI 的官方插件。请直接使用 docker compose(中间没有横线)。

Q:国内服务器拉取镜像一直超时报错怎么办? 遇到网络连接阻断时,需要在 /etc/docker/daemon.json 中增加 registry-mirrors 数组字段,配置可用的镜像加速器地址,然后重启服务生效。

Q:磁盘还是不够用了,怎么清理老旧数据? 执行 docker system prune -a --volumes。该命令会大扫除,清空所有停止的容器、未使用的网络、悬空的镜像以及没有挂载的存储卷。

当 2核2G 的小机器因为磁盘被撑爆而 SSH 掉线时,你就会明白为什么修改 daemon.json 比学会那些花哨的容器编排命令更重要。工具的易用性往往会掩盖底层的物理限制,把基础设施的规矩立在拉取第一个镜像之前,才是稳定的最终保障。

参考链接:

  • Install Docker Engine on Ubuntu
  • Install Docker Engine on Debian