【Docker】2025版Ubuntu 22.04 安装 Docker & Docker Compose 指南

一、前言

Docker 已经是现代开发者的标配技能,而 Docker Compose 更是部署多容器应用的利器。在智能体工作流(如 Dify、Coze)或微服务架构中,没有 Compose 就像只拿了一半的武器

本文将手把手教你在 Ubuntu 22.04 上安装 Docker & Docker Compose,并且指出常见坑点和优化方案,帮你快速搭建一个稳定的容器化环境。


二、Docker 和 Compose 的关系

  • Docker Engine:单个容器的运行引擎,能用 docker run 起一个容器。

  • Docker Compose:容器编排工具,用一份 docker-compose.yml 文件,一键启动一整套服务(数据库、后端、前端、消息队列......)。

✅ 从 Docker v20.10+ 开始,Compose 已经作为插件内置在 Docker CLI 里,不需要单独安装旧版 docker-compose。


三、单容器 vs. 多容器举例

1. 只有 Docker(逐个起容器)

bash 复制代码
docker run -d --name db -e POSTGRES_PASSWORD=123 postgres
docker run -d --name web --link db:db -p 3000:3000 my-web-app

要记住一堆参数,先起数据库再起 Web,麻烦又容易出错。

2. Docker Compose(批量编排)

XML 复制代码
# docker-compose.yml
version: "3.8"
services:
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: 123
    volumes:
      - db-data:/var/lib/postgresql/data
  web:
    image: my-web-app
    ports:
      - "3000:3000"
    depends_on:
      - db
volumes:
  db-data:

一条命令搞定:

bash 复制代码
docker compose up -d

数据库和 Web 服务一次性全部启动,卷和网络自动配置,优雅又高效。


四、安装前的准备(清理旧版本)

有些 Linux 发行版自带了非官方的 docker.io 包,会冲突。先清理:

bash 复制代码
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do
  sudo apt-get remove -y $pkg 2>/dev/null || true
done

五、正式安装(使用官方 apt 源)

1. 添加 GPG key 和源

bash 复制代码
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

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
sudo apt-get update

2. 安装 Docker Engine + Compose 插件

复制代码
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3. 允许非 root 用户使用 Docker

复制代码
sudo usermod -aG docker $USER
# 重新登录 shell 生效

4. 验证安装

复制代码
docker --version
docker compose version
sudo docker run --rm hello-world

看到 "Hello from Docker!" 就说明大功告成 🎉。


六、常见坑点与优化

  1. 重复安装 docker-compose

    • 👉 新版已内置 docker compose,不要再单独安装 docker-compose 二进制
  2. 防火墙绕过

    1. 👉 Docker 暴露的端口会绕过 UFW 默认策略,需要在 DOCKER-USER 链里加规则,比如限制只允许 Tailscale等内网访问:

    bash 复制代码
    # sudo iptables -I DOCKER-USER -p tcp --dport 3000 -s 100.64.0.0/10 -j ACCEPT
    # sudo iptables -I DOCKER-USER -p tcp --dport 3000 -j DROP
    
    # 上面代码不需要执行,只是当你需要关闭防火墙的时候借鉴用
  3. 非 root 用户权限

    👉 一定要把自己加到 docker 用户组,不然每次都要 sudo,很不方便。

  4. 数据持久化

    👉 数据库要挂载卷(volumes),否则容器删了数据也没了。


七、在 Dify/Coze 智能体场景下的价值

Dify、Coze 这种智能体工作流平台,一般需要多个组件:数据库、后端、前端、向量库。

👉 直接用 Compose,一份 docker-compose.yml 一键起停,几分钟就能跑起来一个完整环境

这就是 Compose 的威力。


八、卸载(可选)

如果以后需要完全卸载 Docker:

bash 复制代码
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker /var/lib/containerd
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.gpg

👉 如果这篇文章帮你顺利装好 Docker & Compose,请点个 赞 👍 再转发给你的朋友!

👉 评论区聊聊:你在装 Docker 的时候踩过哪些坑? 说不定能帮后来人少走弯路 🚀。

参考来源:

相关推荐
于天惠6 小时前
手把手教你 Linux 学习:从零到架构师的实操指南
linux
唧唧麻布6 小时前
IPC 进程间通信 interprocess communicate
linux·运维·网络
羚羊角uou6 小时前
【Linux】模拟实现Shell(下)
linux·运维·服务器
倔强的石头_6 小时前
【Linux指南】Linux调试利器gdb入门:从编译到基础命令实战
linux
CZZDg6 小时前
kubectl-etcd
linux·数据库·etcd
倔强的石头_6 小时前
【Linux指南】gdb进阶技巧:断点高级玩法与变量跟踪实战
linux
zjjuejin7 小时前
Dockerfile 指令全解析:从基础到高阶实践
后端·docker
就叫飞六吧7 小时前
企业级主流日志系统架构对比ELKK Stack -Grafana Stack
后端·ubuntu·系统架构
半桔7 小时前
【Linux手册】Unix/Linux 信号:原理、触发与响应机制实战
linux·运维·unix·信号处理