Ubuntu 与 Docker 的集成开发环境实战指南
一 环境准备与安装
- 更新系统并安装依赖
- sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
- 添加 Docker 官方 GPG 与仓库(推荐方式)
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- echo “deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装并启动 Docker
- sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io
- sudo systemctl start docker && sudo systemctl enable docker
- 验证安装
- docker --version
- docker run --rm hello-world
- 可选 非 root 使用
- sudo usermod -aG docker $USER(注销并重新登录后生效)
二 快速上手三种典型开发场景
三 数据持久化与网络配置要点
- 数据持久化
- 数据库与缓存:使用卷将 /var/lib/mysql、/var/lib/redis 等目录挂载到宿主机,避免容器重建导致数据丢失
- 代码与配置:将项目代码与 Nginx 配置挂载到容器内,便于热更新与版本管理
- 网络与服务发现
- Docker Compose 默认创建共享网络,容器间可用服务名互相访问(如 php 服务名直连)
- 端口映射:仅对需要对外暴露的服务(如 80/443/6379/22)做宿主机端口绑定
- 环境变量与安全
- 敏感信息(数据库密码、密钥)优先通过 .env 文件或 Docker Secrets 管理,避免硬编码
- 生产环境禁用 root 远程登录,使用 SSH 密钥或 TLS 证书进行认证
四 常见问题与排障清单
- 权限问题
- 非 root 用户执行 docker 报权限不足:将用户加入 docker 组并重新登录
- 镜像与版本
- 指定明确的镜像标签(如 ubuntu:24.04、python:3.12-slim),避免 latest 造成不可预期升级
- 构建缓存
- Dockerfile 变更不生效:在构建时使用 –no-cache;合理组织层以减少无效重建
- 资源限制
- 内存/CPU 受限导致 OOM 或编译缓慢:在 docker-compose.yml 中为服务设置 mem_limit、cpus
- 日志与调试
- 查看容器日志:docker-compose logs -f
- 进入容器排查:docker-compose exec bash
- 国内网络加速
- 配置镜像加速器(/etc/docker/daemon.json):
- { “registry-mirrors”: [“https://<你的镜像加速地址>”] }
- 重启 Docker:sudo systemctl daemon-reload && sudo systemctl restart docker