当前位置: 首页 > news >正文

【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(逐个起容器)

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(批量编排)

# docker-compose.yml
version: "3.8"
services:db:image: postgresenvironment:POSTGRES_PASSWORD: 123volumes:- db-data:/var/lib/postgresql/dataweb:image: my-web-appports:- "3000:3000"depends_on:- db
volumes:db-data:

一条命令搞定:

docker compose up -d

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


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

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

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; dosudo apt-get remove -y $pkg 2>/dev/null || true
done

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

1. 添加 GPG key 和源

sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupgsudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgecho \"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等内网访问:

    2. # 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:

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 的时候踩过哪些坑? 说不定能帮后来人少走弯路 🚀。

参考来源:

  • Docker 官方文档 - Install Docker Engine on Ubuntu

  • Docker 官方文档 - Compose V2

http://www.xdnf.cn/news/1424449.html

相关文章:

  • 电力工程师的AI时代已来,这6大功能彻底颠覆传统工作模式
  • 系统性学习数据结构-第二讲-顺序表与链表
  • 金融数据安全
  • 基于单片机汽车防盗系统/汽车安全防丢系统
  • 动态代理设计模式
  • 多模态大语言模型部署
  • Java泛型通配符详解:搞懂?/extends/super用法,避开集合操作踩坑点
  • 二、感知机
  • 高防IP防护效果评估全攻略:从指标解读到实战测试
  • langgraph / openmanus / suna 对比
  • 数据安全不用愁,群晖NAS让你存得放心、用得安心
  • 深度学习环境搭建运行(二) Ubuntu22.04安装基于CUDA11.8的ONNXRuntime-gpu1.18.1详细步骤(新手入门)
  • 联邦学习的文献复现与创新思路指导
  • Qt 项目文件(.pro)中添加 UI 文件相关命令
  • 深度学习】--卷积神经网络
  • k8s--etcd
  • h5实现内嵌微信小程序支付宝 --截图保存海报分享功能
  • authentication port-control auto 和 dot1x port-control auto
  • Linux ARP老化机制/探测机制/ip neigh使用
  • Paimon MergeTreeWrite、Compaction 和 快照构建
  • 甲烷浓度时空演变趋势分析与异常值计算(附下载脚本)
  • 基于docker-compose搭建EFK(Elasticsearch+fluentd+kibana)的日志平台
  • 2025年工作后值得考的财会行业证书推荐,尤其是第二个!
  • 从网络层接入控制过渡到应用层身份认证的过程
  • 如何在SptingBoot项目中引入swagger生成API文档
  • HarvardX TinyML小笔记2(番外3:数据工程)
  • 技术速递|构建你的第一个 MCP 服务器:如何使用自定义功能扩展 AI 工具
  • Linux之Shell编程(四)函数、数组、正则
  • PostgreSQL备份指南:逻辑与物理备份详解
  • EPLAN如何添加接触器辅助触头 | 解决触点不足问题详解4----使用部件组