服务器怎么配置Docker?

在现代服务端开发中,Docker 已经成为应用部署的标准。如果你刚刚拥有一台纯净的 Ubuntu 22.04 服务器,不要急着直接运行容器。本文将带你完成一套生产级的 Docker 环境配置。我们将不仅仅是安装 Docker,更会建立一套标准化的目录结构和网络规划,为未来在一台服务器上运行 多个Docker应用且互不干扰打下坚实基础。
第一步:环境准备与旧版本清理
首先,确保服务器处于最新状态,并清理可能存在的旧版本 Docker(防止冲突)。
# 1. 更新系统软件包sudo apt update && sudo apt upgrade -y# 2. 卸载旧版本(如果是纯净系统,这一步通常提示未安装,忽略即可)sudo apt-get remove docker docker-engine docker.io containerd runc
第二步:使用官方源安装 Docker (推荐)
虽然 Ubuntu 官方仓库有 Docker,但版本通常较旧。为了获得最新的特性(特别是 Docker Compose V2)和安全性,强烈建议使用 Docker 官方仓库安装。
1. 安装必要依赖
sudo apt-get install -y ca-certificates curl gnupg2. 添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o/etc/apt/keyrings/docker.gpgsudo chmod a+r /etc/apt/keyrings/docker.gpg
3. 设置仓库源
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4. 安装 Docker Engine
sudo apt-get updatesudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
第三步:关键配置优化 (生产环境必备)
安装完成后,我们需要做两件对未来维护至关重要的事情。
1. 免 Sudo 执行 (方便管理)
默认情况下运行 Docker 需要 sudo,这在脚本和日常操作中很不方便。
# 将当前用户加入 docker 用户组sudo usermod -aG docker $USER# 激活更改(或者退出 SSH 重连)newgrp docker
测试:运行 docker ps,如果不报错,说明配置成功。
2. 配置日志轮转与镜像加速
这是新手最容易忽略的坑! 如果不配置日志轮转,Docker 容器的日志会无限增长,最终占满服务器硬盘。
创建或编辑配置文件:
sudo mkdir -p /etc/dockersudo nano /etc/docker/daemon.json
写入以下内容:
{"log-driver": "json-file","log-opts": {"max-size": "20m","max-file": "3"},"registry-mirrors":["https://docker.m.daocloud.io","https://huecker.io"]}
- log-opts: 每个容器日志最多 20MB,保留 3 个文件。
- registry-mirrors: (可选) 如果服务器在国内,建议配置加速源;如果在海外,可删除此项。
重启 Docker 生效:
sudo systemctl daemon-reloadsudo systemctl restart docker
第四步:规划标准化的目录结构 (核心)
为了实现“多应用、易扩展”,我们拒绝将容器文件散落在 /home 或 /tmp 下。我们要建立一个统一的“基地”。
建议在 /opt 目录下建立 docker-apps 文件夹,所有未来的应用都将“住”在这里。
1. 创建主目录
sudo mkdir -p /opt/docker-appssudo chown $USER:$USER /opt/docker-apps
2. 未来的目录结构预览这就是我们实现“易扩展”的秘诀。每个应用一个独立文件夹,包含自己的配置。
/opt/docker-apps/├── nginx-proxy/ <-- 未来:网关服务│ ├── docker-compose.yml│ └── data/├── talent-match/ <-- 应用A:相亲应用│ ├── docker-compose.yml│ ├── .env│ └── logs/└── blog-system/ <-- 应用B:博客系统└── ...
这样做的好处是:备份时,只需要把/opt/docker-apps 打包带走,所有数据就都备份好了。第五步:创建专用网络 (为反向代理做准备)
如果我们要在一台服务器上运行多个网站(如 a.com, b.com),我们需要一个“网关”容器(Nginx Proxy Manager)来统一管理流量。
为了让网关能“看见”其他的应用容器,它们必须处于同一个 Docker 网络中。
创建一个名为 web_net 的外部网络:
docker network create web_net验证:
docker network ls哪怕现在还没部署应用,先把路修好,后面直接跑车。
总结与预告
至此,你的服务器已经拥有了一个健壮、干净且标准化的 Docker 环境:
- 安装了最新的 Docker Engine。
- 配置了自动日志清理,防止磁盘爆满。
- 建立了 /opt/docker-apps 统一目录结构。
- 铺设了 web_net 专用网络。
下一步:万事俱备,只欠东风。在下一篇文章中,我们将在这个环境中部署 Nginx Proxy Manager,并教你如何通过可视化的界面,轻松地将不同的域名(如 app.example.com)指向你刚刚部署好的不同容器,彻底告别繁琐的 Nginx 配置文件。
附录:常用命令速查卡
- 启动所有容器(在项目目录下):docker compose up -d
- 停止所有容器:docker compose down
- 查看容器状态:docker ps -a
- 查看容器日志:docker logs -f <容器名>
- 查看资源占用:docker stats
本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。



