作为我的第一篇Hexo博客,今天分享最实用的服务器运维操作——Debian 12 系统下 Docker 的完整安装流程,以及如何通过 Docker 快速运行项目。全程命令复制即用,避开所有新手坑,适合刚接触服务器和 Docker 的小伙伴。

Docker 作为轻量级容器技术,能让项目运行环境标准化,避免“本地能跑、服务器跑不了”的尴尬,是后端开发、服务器部署的必备工具。本文基于 Debian 12(Bookworm)系统,全程无多余操作,一步步带你完成从安装到运行项目的全流程。

一、前置准备

1.1 系统要求

  • 系统版本:Debian 12(Bookworm,本文实测版本)

  • 权限:需 root 权限(或 sudo 权限),避免命令执行失败

  • 网络:服务器能正常访问外网(用于下载 Docker 相关依赖)

1.2 登录服务器

通过 SSH 工具登录服务器(如 Xshell、FinalShell、PowerShell),登录命令:

1
ssh root@你的服务器公网IP

输入服务器密码,登录成功后进入命令行界面,开始后续操作。

二、安装 Docker(全程复制命令即可)

Debian 12 官方源中 Docker 版本可能较旧,推荐使用 Docker 官方源安装最新稳定版,步骤如下:

2.1 卸载旧版本(若有)

如果服务器之前安装过旧版 Docker,先卸载,避免冲突:

1
sudo apt-get remove docker docker-engine docker.io containerd runc

若提示“无相关软件包”,说明未安装过,直接跳过此步骤即可。

2.2 安装必要依赖

安装 apt 工具和 CA 证书,用于通过 HTTPS 访问 Docker 官方源:

1
2
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

2.3 添加 Docker 官方 GPG 密钥

导入官方密钥,确保下载的 Docker 软件包是可信的:

1
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

2.4 设置 Docker 官方源

将 Docker 官方源添加到 Debian 的软件源列表中,指定 Debian 12(Bookworm)版本:

1
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

2.5 安装 Docker Engine

更新软件源,然后安装最新版 Docker Engine、Containerd:

1
2
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

2.6 验证 Docker 安装成功

安装完成后,启动 Docker 服务,并设置开机自启,然后验证是否能正常运行:

1
2
3
4
5
6
7
8
# 启动 Docker 服务
sudo systemctl start docker
# 设置开机自启(重启服务器后 Docker 自动运行)
sudo systemctl enable docker
# 验证 Docker 状态
sudo systemctl status docker
# 运行 hello-world 容器,测试 Docker 是否能正常拉取和运行镜像
sudo docker run hello-world

若出现 “Hello from Docker!” 相关提示,说明 Docker 安装成功 ✅

三、Docker 基础配置(可选,提升使用体验)

3.1 免 sudo 使用 Docker(推荐)

默认情况下,运行 Docker 命令需要加 sudo,配置后可直接使用 docker 命令,无需输入密码:

1
2
3
4
5
# 创建 docker 用户组(若不存在)
sudo groupadd docker
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
# 注销当前登录,重新登录后生效(或重启服务器)

重新登录后,执行 docker ps,若不报错,说明配置成功。

3.2 更换 Docker 镜像源(可选,提升拉取速度)

默认 Docker 镜像源在国外,拉取镜像速度较慢,可更换为国内镜像源(如阿里云、网易云):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 创建 Docker 配置目录(若不存在)
sudo mkdir -p /etc/docker
# 编写配置文件,添加国内镜像源
sudo tee /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.aliyun.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
EOF
# 重启 Docker 服务,使配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker

配置完成后,拉取镜像的速度会明显提升。

四、使用 Docker 运行项目(以常见项目为例)

Docker 运行项目的核心是「拉取镜像 → 运行容器」,以下以 2 个常见场景为例,演示完整流程,其他项目可参考此逻辑。

场景1:运行 Nginx 项目(静态网站/反向代理)

1
2
3
4
5
6
7
# 1. 拉取最新版 Nginx 镜像
docker pull nginx:latest
# 2. 运行 Nginx 容器(映射端口 80,方便外部访问)
# -d:后台运行容器
# -p 80:80:将服务器 80 端口映射到容器 80 端口
# --name nginx-web:给容器命名为 nginx-web
docker run -d -p 80:80 --name nginx-web nginx:latest

运行成功后,浏览器访问服务器公网 IP,即可看到 Nginx 默认欢迎页,说明 Nginx 容器运行正常。

若要部署自己的静态网站(如 Hexo 博客),可通过挂载目录的方式,将本地网站文件映射到容器中(参考命令):

1
2
3
4
5
# 先停止并删除之前的 Nginx 容器
docker stop nginx-web
docker rm nginx-web
# 挂载本地目录(/www/hexoblog 为服务器本地网站目录)
docker run -d -p 80:80 --name nginx-web -v /www/hexoblog:/usr/share/nginx/html nginx:latest

场景2:运行 Node.js 项目(以简单 Node 服务为例)

假设你有一个简单的 Node.js 项目,先在服务器本地准备好项目文件(如 app.js),然后通过 Docker 运行:

  1. 创建项目目录并编写简单 Node 服务
1
2
3
4
5
6
7
8
9
mkdir -p /root/node-project
cd /root/node-project
# 编写 app.js(简单的 HTTP 服务)
echo "const http = require('http');
http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Docker + Node.js!');
}).listen(3000);
console.log('Server running on port 3000');" > app.js
  1. 创建 Dockerfile(告诉 Docker 如何构建镜像)
1
2
3
4
5
echo "FROM node:18-alpine
WORKDIR /app
COPY . .
EXPOSE 3000
CMD [\"node\", \"app.js\"]" > Dockerfile
  1. 构建 Docker 镜像并运行容器
1
2
3
4
# 构建镜像(-t 给镜像命名,node-demo:v1 为镜像名和版本)
docker build -t node-demo:v1 .
# 运行容器(映射 3000 端口)
docker run -d -p 3000:3000 --name node-app node-demo:v1

运行成功后,浏览器访问 http://服务器IP:3000,即可看到 “Hello Docker + Node.js!” 的提示。

五、Docker 常用命令(必记)

日常使用 Docker ,记住以下几个命令就足够应对大部分场景:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查看正在运行的容器
docker ps
# 查看所有容器(包括已停止的)
docker ps -a
# 启动/停止/重启容器(替换 container-name 为容器名)
docker start container-name
docker stop container-name
docker restart container-name
# 删除容器
docker rm container-name
# 查看本地镜像
docker images
# 删除本地镜像
docker rmi image-name:version
# 查看容器日志(排查项目运行错误)
docker logs container-name
# 进入容器内部(交互模式)
docker exec -it container-name /bin/bash

六、常见问题排查

  • 问题1:运行 docker 命令报错 “Permission denied”
    解决:未配置免 sudo 使用 Docker,要么加 sudo 运行命令,要么按 3.1 步骤配置用户组。

  • 问题2:拉取镜像速度极慢,甚至超时
    解决:按 3.2 步骤更换国内镜像源,重启 Docker 后再尝试拉取。

  • 问题3:容器运行成功,但外部无法访问
    解决:1. 检查服务器防火墙是否开放对应端口(如 80、3000);2. 检查容器端口映射是否正确(-p 宿主端口:容器端口)。

  • 问题4:Docker 服务启动失败
    解决:执行sudo systemctl status docker 查看错误日志,根据日志提示排查(常见原因:配置文件错误、端口被占用)。

七、总结

本文完整覆盖了 Debian 12 系统下 Docker 的安装、基础配置,以及运行项目的核心流程,所有命令均经过实测,新手可直接复制执行。

Docker 的核心优势在于“一次构建,到处运行”,后续无论部署博客、后端项目,还是数据库,都可以通过 Docker 快速实现,无需担心环境配置冲突。