现在越来越多的应用可以使用 Docker 一键部署,本文将介绍如何在 Debian 12 中安装 Docker 与 Docker Compose。

验证环境

1
2
3
4
5
6
root@debian:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm

安装同样适用于 Debian 11 以及 Ubuntu 24.04

Docker 介绍

Docker 是一个开源的容器化平台,它可以将应用程序及其依赖打包到一个轻量级、可移植的容器中,使其能够在任何环境中一致地运行。

  • 轻量:容器共享宿主机的操作系统内核,启动速度快,占用资源少。
  • 可移植:容器可以在开发、测试和生产环境中一致运行,解决“环境不一致”的问题。
  • 隔离性:每个容器都是独立运行的,互不影响。
  • 快速部署:通过镜像技术,实现应用的快速打包、发布和部署。

Docker Compose 介绍

Docker Compose 是 Docker 提供的用于定义和管理多容器应用的工具。通过一个简单的 YAML 文件docker-compose.yml,你可以定义和启动多个服务容器,使得应用的部署和管理更加便捷,可以不必使用 Docker run 命令。

特点:

  • 多容器管理:同时启动、停止和管理多个容器。
  • 通过 YAML 配置:通过 docker-compose.yml 定义服务、网络、存储等。
  • 简化命令:使用单一命令 docker compose 管理容器

本文将介绍安装 V2 版本,对应的命令是 docker compose

使用官方源安装

以下操作需要在 root 用户下完成,请使用 sudo -isu root 切换到 root 用户进行操作。

首先,安装一些必要的软件包:

1
2
3
apt update
apt upgrade -y
apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates

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

1
2
curl -sSL https://download.docker.com/linux/debian/gpg | gpg --dearmor > /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" > /etc/apt/sources.list.d/docker.list
1
2
curl -sSL https://download.docker.com/linux/debian/gpg | gpg --dearmor > /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" > /etc/apt/sources.list.d/docker.list

国内机器可以用 清华 TUNA 的国内源:

1
2
curl -sS https://download.docker.com/linux/debian/gpg | gpg --dearmor > /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" > /etc/apt/sources.list.d/docker.list
1
2
curl -sS https://download.docker.com/linux/debian/gpg | gpg --dearmor > /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" > /etc/apt/sources.list.d/docker.list

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

1
2
apt update
apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
root@debian:~# docker version
Client: Docker Engine - Community
Version: 27.4.0
API version: 1.47
Go version: go1.22.10
Git commit: bde2b89
Built: Sat Dec 7 10:38:57 2024
OS/Arch: linux/amd64
Context: default

Server: Docker Engine - Community
Engine:
Version: 27.4.0
API version: 1.47 (minimum version 1.24)
Go version: go1.22.10
Git commit: 92a8393
Built: Sat Dec 7 10:38:57 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.7.24
GitCommit: 88bf19b2105c8b17560993bee28a01ddc2f97182
runc:
Version: 1.2.2
GitCommit: v1.2.2-0-g7cb3632
docker-init:
Version: 0.19.0
GitCommit: de40ad0

如果需要以非 root 模式运行 Docker,那么可以把特定用户也加入 docker 组,比如我们把 www-data 用户加进去:

1
2
apt install docker-ce-rootless-extras
sudo usermod -aG docker www-data

Docker Compose V2

我们已安装 docker-compose-plugin,这会为 Docker 添加 docker compose 命令

1
2
root@debian:~# docker compose version 
Docker Compose version v2.31.0

修改 Docker 配置

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

1
2
3
4
5
6
7
8
9
10
11
12
13
cat > /etc/docker/daemon.json << EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "20m",
"max-file": "3"
},
"ipv6": true,
"fixed-cidr-v6": "fd00:dead:beef:c0::/80",
"experimental":true,
"ip6tables":true
}
EOF

然后重启 Docker 服务:

1
systemctl restart docker

Docker 常用命令使用介绍

快速了解一下 docker 常见命令,使用 docker compose 进行管理会更方便。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 拉取镜像
docker pull <镜像名>:<标签>

# 查看当前正在运行的容器
docker ps

# 查看所有容器(包括已停止的)
docker ps -a

# 查看本地镜像
docker images

# 删除镜像
docker rmi <镜像ID或名称>
docker rmi ubuntu:latest

# 运行容器
docker run -d -p <宿主端口>:<容器端口> --name <容器名> <镜像名>

# 启动,停止,重启,删除
docker start / stop / restart / rm <容器名或ID>

# 进入容器执行交互式命令
docker exec -it <容器名或ID> /bin/bash

# 查看容器日志
docker logs <容器名或ID>

# 查询 Docker 使用的磁盘空间:
docker system df

# 删除所有未被使用的镜像
docker image prune -a

Docker Compose 使用介绍

docker compose 需要在 docker-compose.yml 文件所在的工作目录执行,这里推荐创建一个工作目录,在其中统一存放配置文件,比如:

1
2
3
4
5
6
7
docker/
├── nginx/
│ └── docker-compose.yml
├── mysql/
│ └── docker-compose.yml
└── redis/
└── docker-compose.yml

docker compose 常用命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 拉取,更新镜像
docker compose pull

# 启动容器
docker compose up

# 后台启动
docker compose up -d

# 停止容器
docker compose stop

# 停止容器,并移除创建的网络、卷和镜像
docker compose down

# 重启容器
docker compose restart

# 查看正在运行的服务
docker compose ps

# 查看日志
docker compose logs
# 查看实时日志
docker compose logs -f

# 进入容器。执行交互命令
docker compose exec <服务名> <命令>
docker compose exec nginx /bin/bash

# 查看服务统计信息,实时显示 CPU、内存等资源使用情况。
docker compose stats

docker compose 还是太长? 执行下面的命令后就可以使用 dc 作为替代:

执行前,先运行一下 dc 确认命令当前没有在使用,执行后运行 dc version 确认

1
2
echo 'alias dc="docker compose"' >> ~/.bashrc 
source ~/.bashrc
1
2
echo 'alias dc="docker compose"' >> ~/.zshrc 
source ~/.zshrc

效果:

1
2
3
4
5
root@debian:~# dc
-bash: dc: command not found

root@debian:~# dc version
Docker Compose version v2.31.0

之后,当我们创建了 docker-compose.yml 文件后,启动或是更新服务只需要执行:

1
2
dc pull 
dc up -d

现在前往 GitHub 或是 Docker Hub 寻找有趣的项目吧!

参考: Debian 12 / Ubuntu 24.04 安装 Docker 以及 Docker Compose 教程