---
title: "Debian / Ubuntu 安装 Docker 以及 Docker Compose 教程"
tags: ['Debian', 'Ubuntu', 'Docker', 'Docker Compose']
published: 2022-02-05 23:09:19
updated: 2024-06-21 00:00:00
excerpt: "本文将指导如何在 Debian 和 Ubuntu 下安装 Docker 以及 Docker Compose。"
---
> 本文件是烧饼博客文章的 Markdown 原文，正式版本见 https://u.sb/debian-install-docker/
> 全站文章与页面索引见 https://u.sb/llms.txt，建议先读索引再继续抓取。

本文将指导如何在 Debian 和 Ubuntu 下安装 Docker 以及 Docker Compose。

*PS：本文适用于 Debian Stable 以及 Ubuntu LTS*

## 什么是 Docker？

Docker 是一种容器化技术，可以在服务器上快速搭建容器并在不污染宿主机的情况下运行软件，而不再需要安装配置各种环境。开源 [Docker 社区](https://www.docker.com/)致力于改进这类技术，并免费提供给所有用户，使之获益。

## 什么是 Docker Compose？

传统模式下运维人员需要运行 `docker run` 来启动各种容器，一旦容器过多，就无法一次性记住所有的运行参数和命令，这时候我们可以使用 [Docker Compose](https://docs.docker.com/compose/) 来解决这个问题。

Docker Compose 是一个用于在单个主机上定义和运行多个 Docker 容器的工具。它使用 YAML 文件来配置应用程序的服务，然后使用一个命令就可以创建并启动所有服务。使用 Docker Compose 可以大大简化 Docker 容器的管理和部署，特别是对于具有多个互相依赖的容器的复杂应用。

## 使用官方源安装 Docker

以下操作需要 root 权限，本文命令均已带上 `sudo` 前缀，请确保当前用户拥有 `sudo` 权限；或者直接使用 root 用户操作并省略命令中的 `sudo`。

首先，安装一些必要的软件包：

```bash
sudo apt update
sudo apt upgrade -y
sudo apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates
```

然后加入 Docker 的 GPG 公钥和 apt 源：

<div data-code-group>
<div data-code-title="Debian">

```bash
curl -sSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-ce.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/debian $(lsb_release -sc) stable" | sudo tee /etc/apt/sources.list.d/docker.list
```

</div>
<div data-code-title="Ubuntu">

```bash
curl -sSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-ce.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -sc) stable" | sudo tee /etc/apt/sources.list.d/docker.list
```

</div>
</div>

国内机器可以用[清华 TUNA](https://mirrors.tuna.tsinghua.edu.cn/) 的国内源：

<div data-code-group>
<div data-code-title="Debian">

```bash
curl -sSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-ce.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian $(lsb_release -sc) stable" | sudo tee /etc/apt/sources.list.d/docker.list
```

</div>
<div data-code-title="Ubuntu">

```bash
curl -sSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-ce.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu $(lsb_release -sc) stable" | sudo tee /etc/apt/sources.list.d/docker.list
```

</div>
</div>

Debian 下也可以直接使用 [extrepo](/debian-extrepo/):

```bash
sudo apt update
sudo apt install extrepo -y
sudo extrepo enable docker-ce
```

国内机器如果抓取 GPG Key 超时，在基于信任的前提下，也可以用国内的镜像代替，比如：

```bash
curl -sSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-ce.gpg
```

然后更新系统后即可安装 Docker CE 和 Docker Compose 插件：

```bash
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
```

此时可以使用 `docker version` 命令检查是否安装成功：

```bash
root@debian ~ # docker version
Client: Docker Engine - Community
 Version:           28.3.3
 API version:       1.51
 Go version:        go1.24.5
 Git commit:        980b856
 Built:             Fri Jul 25 11:34:00 2025
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          28.3.3
  API version:      1.51 (minimum version 1.24)
  Go version:       go1.24.5
  Git commit:       bea959c
  Built:            Fri Jul 25 11:34:00 2025
  OS/Arch:          linux/amd64
  Experimental:     true
 containerd:
  Version:          1.7.27
  GitCommit:        05044ec0a9a75232cad458027ca83437aae3f4da
 runc:
  Version:          1.2.5
  GitCommit:        v1.2.5-0-g59923ef
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
```

如果需要某个特定用户可以用 Docker [rootless](https://docs.docker.com/engine/security/rootless/) 模式运行 Docker，那么可以把这个用户也加入 docker 组，比如我们把 `www-data` 用户加进去：

```bash
sudo apt install docker-ce-rootless-extras
sudo usermod -aG docker www-data
```

## 安装 Docker Compose

因为我们已经安装了 `docker-compose-plugin`，所以 Docker 目前已经自带 `docker compose` 命令，基本上可以替代 `docker-compose`：

```bash
root@debian ~ # docker compose version
Docker Compose version v2.39.1
```

如果某些镜像或命令不兼容，则我们还可以单独安装 Docker Compose：

我们可以使用 Docker 官方发布的 [Github](https://github.com/docker/compose) 直接安装最新版本：

```bash
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
```

此时可以使用 `docker-compose version` 命令检查是否安装成功：

```bash
root@debian ~ # docker-compose version
Docker Compose version v2.39.1
```

## 修改 Docker 配置

以下配置会增加一段自定义内网 IPv6 地址，开启容器的 IPv6 功能，以及限制日志文件大小，防止 Docker 日志塞满硬盘 (泪的教训)：

```bash
sudo bash -c 'cat > /etc/docker/daemon.json << EOF
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "20m",
        "max-file": "3"
    },
    "userland-proxy": false,
    "ipv6": true,
    "fixed-cidr-v6": "fdb::/64",
    "experimental":true,
    "ip6tables":true
}
EOF'
```

然后重启 Docker 服务：

```bash
sudo systemctl restart docker
```

好了，我们已经安装好了 Docker 和 Docker Compose，然后就可以开始愉快的安装各种软件，限于篇幅，我们不再赘述，今后慢慢介绍安装各种 Docker 软件的方法。