Skip to content

Docker 和 Docker Compose 使用指南:从安装到管理全流程实战

发布日期:2026年6月10日

如果你在做私有部署、搭建开发环境、或者运维任何服务,Docker 几乎是绑不开的工具

这篇文章按照安装 → 启动 → 管理的递进顺序,带你从零掌握 Docker 和 Docker Compose 的核心使用方法,最后附上常用命令速查表,方便日常翻阅。


🐳 Docker 到底好在哪?

在 Docker 出现之前,部署一个应用的典型流程是这样的:

  1. 买一台服务器
  2. 安装操作系统
  3. 安装运行环境(JDK、Python、Node.js……)
  4. 安装数据库(MySQL、Redis……)
  5. 上传代码,配置环境变量
  6. 祈祷环境配置和开发机一致,不要出幺蛾子

这套流程每换一台服务器就要重复一遍,而且经常遇到"在我电脑上能跑,在服务器上报错"的经典问题。

Docker 解决了这个问题——它把你的应用和所有依赖打包成一个"容器",在任何机器上都能以相同的方式运行。

用个比喻来说,比如家里人来一个亲戚,需要给这个亲戚门口准备拖鞋,卫生间准备洗漱用品,房间准备新的褥子床单被套等。等亲戚走了,再挨个收拾整理,即琐碎又麻烦。 而docker类似在家里单独开了一个标准间,里面一切按照设定的要求铺设布置好,并且跟原来家里的环境隔离。当亲戚走了,可以把这个标准间整个收起来,如果里面东西有需要的可以提前收起来,然后整个标间都回收了。 而在软件层面这种技术就是docker,这个标准间可以看作是一个容器,里面装的是亲戚这个应用和所有依赖。

三个核心概念

镜像(Image)   →  应用的"安装包",包含了运行环境和代码
容器(Container)→  镜像运行起来的"实例",可以理解为一台轻量级虚拟机
仓库(Registry) →  存放镜像的"应用商店",如 Docker Hub

类比理解:

  • 镜像 = 手机的 App 安装包(.apk / .ipa)
  • 容器 = 安装到手机上正在运行的 App
  • 仓库 = 应用商店(App Store / 应用商店)

📦 Docker 篇:安装 → 启动 → 管理

一、安装 Docker

Linux(CentOS / Ubuntu)

Ubuntu / Debian:

bash
# 更新包索引
sudo apt-get update

# 安装必要的依赖
sudo apt-get install -y ca-certificates curl gnupg

# 添加 Docker 官方 GPG 密钥
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

# 添加 Docker 软件源
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

# 安装 Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

# 启动 Docker 并设为开机自启
sudo systemctl start docker
sudo systemctl enable docker

CentOS / RHEL:

bash
# 安装依赖
sudo yum install -y yum-utils

# 添加 Docker 软件源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装 Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 启动 Docker 并设为开机自启
sudo systemctl start docker
sudo systemctl enable docker

配置国内镜像加速(重要且推荐):

由于国内访问 Docker Hub 较慢,建议配置镜像加速:

bash
# 编辑 Docker 配置文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
EOF

# 重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

Windows / macOS

Windows 和 macOS 用户需要使用 Docker Desktop

  1. 访问 https://www.docker.com/products/docker-desktop 下载安装包
  2. 运行安装程序,按提示完成安装
  3. 安装完成后,Docker Desktop 会自动启动
  4. 打开终端,运行 docker --version 验证安装

验证安装

bash
# 检查 Docker 版本
docker --version

# 检查 Docker 服务状态
docker info

# 运行测试容器(Hello World)
docker run hello-world

如果看到 Hello from Docker! 的输出,说明安装成功。

将当前用户加入 docker 组(Linux,可选)

bash
# 避免每次使用 docker 都要 sudo
sudo usermod -aG docker $USER

# 重新登录终端后生效

二、启动容器

安装好 Docker 之后,就可以拉取镜像并启动容器了。

拉取镜像

bash
# 拉取nginx 镜像
docker pull nginx

# 拉取指定版本的镜像
docker pull mysql:8.0
docker pull redis:7.0
docker pull nginx:1.25

# 拉取私有仓库的镜像(需要先 docker login)
docker pull registry.example.com/myapp:latest

# 查看本地已有的镜像
docker images

运行容器(启动程序)

bash
# 最简单的运行方式(后台模式,映射端口) 启动一个nginx 
docker run -d --name my-nginx -p 80:80 nginx

# 高级一些的启动方式:运行容器并设置环境变量
docker run -d --name my-app \
  -e DB_HOST=localhost \
  -e DB_PORT=3306 \
  -e DB_PASSWORD=secret \
  myapp:latest

# 更高级一些的启动方式,运行容器并挂载数据卷(持久化数据)
docker run -d --name my-app \
  -v /host/data:/app/data \
  -v /host/logs:/app/logs \
  -p 8080:3000 \
  myapp:latest



# 启动容器并限制资源
docker run -d --name my-app \
  --memory="512m" \
  --cpus="1.0" \
  myapp:latest

💡 常用参数说明:

  • -d:后台运行(detached 模式)
  • --name:给容器起个名字,方便后续管理
  • -p 宿主机端口:容器端口:端口映射,让外部访问容器内的服务
  • -v 宿主机路径:容器路径:数据卷挂载,持久化容器内的数据
  • -e KEY=VALUE:设置环境变量
  • --network:指定网络
  • --restart=always:容器退出时自动重启
  • --memory / --cpus:限制容器使用的内存和 CPU

三、管理容器

容器跑起来之后,日常运维就靠这些命令了。

查看容器状态

bash
# 查看正在运行的容器
docker ps

# 查看所有容器(包括已停止的)
docker ps -a

# 查看容器的资源使用情况(CPU、内存)
docker stats

# 查看容器的详细信息
docker inspect my-nginx

# 查看容器内进程
docker top my-nginx

# 查看容器的端口映射
docker port my-nginx

查看日志

bash
# 实时跟踪容器日志(最常用)
docker logs -f my-nginx

# 查看最近 100 行日志
docker logs --tail 100 my-nginx

# 查看指定时间之后的日志
docker logs --since "2026-06-10T10:00:00" my-nginx

容器生命周期管理

bash
# 启动已停止的容器
docker start my-nginx

# 停止容器(优雅停止,发送 SIGTERM)
docker stop my-nginx

# 强制停止容器(发送 SIGKILL)
docker kill my-nginx

# 重启容器
docker restart my-nginx

# 删除已停止的容器
docker rm my-nginx

# 强制删除运行中的容器
docker rm -f my-nginx

# 停止并删除所有已停止的容器
docker container prune

进入容器内部

bash
# 进入容器的交互式终端(最常用)
docker exec -it my-nginx /bin/bash

# 如果容器没有 bash,用 sh
docker exec -it my-nginx /bin/sh

# 在容器内执行单条命令(不需要交互)
docker exec my-nginx cat /etc/nginx/nginx.conf

# 进入 MySQL 容器的命令行
docker exec -it my-mysql mysql -uroot -p

镜像管理

bash
# 查看本地所有镜像
docker images

# 查看镜像的详细信息
docker inspect nginx:latest

# 删除镜像
docker rmi nginx:latest

# 强制删除镜像
docker rmi -f nginx:latest

# 清理所有未使用的镜像(释放磁盘空间)
docker image prune -a

数据卷管理

bash
# 创建数据卷
docker volume create my-data

# 查看所有数据卷
docker volume ls

# 查看数据卷详情
docker volume inspect my-data

# 删除数据卷
docker volume rm my-data

# 清理所有未使用的数据卷
docker volume prune

💡 最佳实践: 重要数据(如数据库文件)一定要用命名数据卷绑定挂载来持久化,不要依赖容器的可写层。容器一删,数据全丢。

系统清理

Docker 使用一段时间后会积累大量无用资源,占用磁盘空间:

bash
# 查看 Docker 磁盘使用情况
docker system df

# 查看详细信息
docker system df -v

# 一键清理所有未使用的资源(镜像、容器、网络、缓存)
docker system prune

# 清理所有未使用的资源 + 未使用的镜像
docker system prune -a

# 清理所有未使用的资源 + 数据卷(⚠️ 会删除未挂载的数据卷)
docker system prune -a --volumes

⚠️ 注意: docker system prune -a --volumes 会删除所有未被运行中容器使用的数据卷,执行前请确认重要数据已备份


🐙 Docker Compose 篇:

Docker 解决了单个应用的部署问题,但现实中一个项目往往需要多个服务协同工作——应用 + 数据库 + 缓存 + 反向代理……

Docker Compose 就是用来一次性管理多个容器的工具。 一个 YAML 文件定义所有服务,一条命令全部启动。

一般来说,docker-compose 都不在需要用户再额外配置,最多改改某些服务的端口号(防止端口冲突),然后直接启动即可,非常的便捷

一、安装 Docker Compose

一般按照docker的时候,会自动带上 compose 组件,如果你按照的时候,没有勾选docker compose ,可以重新安装,或者使用下面的方法单独安装。

Linux

bash
# 下载 Docker Compose(选择最新版本)
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 创建软链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 验证安装
docker-compose --version

Windows / macOS

如果安装了 Docker Desktop,Docker Compose 已经包含在内,无需单独安装。

bash
# 验证安装
docker-compose --version

二、启动服务

获取 docker-compose.yml

获取你所使用的项目的 docker-compose.yml 文件 或者自行编写docker-compose.yml 文件 (限于篇幅,本文章不提供编写docker-compose.yml的部分,如果有感兴趣的朋友请自行搜索对应教程)

启动

bash
# 后台启动所有服务
docker-compose up -d

# 前台启动(可以看到实时日志,Ctrl+C 停止)
docker-compose up

# 重新构建镜像并启动
docker-compose up -d --build

# 强制重新创建所有容器
docker-compose up -d --force-recreate

验证启动状态

bash
# 查看服务状态
docker-compose ps

# 查看所有服务的日志
docker-compose logs -f

三、管理服务

查看日志

bash
# 查看所有服务的日志(实时跟踪)
docker-compose logs -f

# 查看指定服务的日志
docker-compose logs -f mysql
docker-compose logs -f app

# 查看最近 200 行日志
docker-compose logs --tail 200 app

管理单个服务

bash
# 只启动指定服务
docker-compose up -d mysql

# 只停止指定服务
docker-compose stop mysql

# 只重启指定服务
docker-compose restart mysql

# 在指定服务中执行命令
docker-compose exec mysql mysql -uroot -p

# 进入指定服务的 shell
docker-compose exec -it app /bin/bash

服务生命周期

bash
# 停止所有服务
docker-compose down

# 停止并删除数据卷(⚠️ 会清除数据)
docker-compose down -v

# 重启所有服务
docker-compose restart

# 暂停所有服务
docker-compose pause

# 恢复暂停的服务
docker-compose unpause

扩展和更新

bash
# 扩展某个服务的实例数量
docker-compose up -d --scale app=3

# 拉取最新镜像并更新服务(最常用的升级方式)
docker-compose pull
docker-compose up -d

# 验证 docker-compose.yml 语法
docker-compose config

# 查看服务使用的镜像
docker-compose images

🔧 常见问题排查

容器启动失败

bash
# 第一步:查看容器状态
docker ps -a
# 看 STATUS 列,是 Exited 还是 Created

# 第二步:查看日志
docker logs my-app
# 90% 的问题都能从日志里找到答案

# 第三步:检查配置
docker inspect my-app
# 看环境变量、挂载路径、端口映射是否正确

常见原因:

  • 端口被占用 → 换个端口或停掉占用端口的服务
  • 配置文件路径错误 → 检查 -v 挂载路径
  • 环境变量缺失 → 检查 .env 文件
  • 内存不足 → docker stats 查看资源使用

网络不通

bash
# 检查容器是否在同一个网络
docker network inspect my-network

# 测试容器之间的连通性
docker exec my-app ping my-mysql

# 检查端口是否正确映射
docker port my-app

数据丢失

bash
# 检查数据卷是否正确挂载
docker volume ls
docker inspect my-volume

# 进入容器查看数据目录
docker exec -it my-mysql ls -la /var/lib/mysql

📋 命令速查表

Docker 常用命令

场景命令说明
安装验证docker --version查看 Docker 版本
docker run hello-world运行测试容器
镜像操作docker pull <镜像>:<标签>拉取镜像
docker images查看本地镜像
docker rmi <镜像>删除镜像
docker image prune -a清理未使用的镜像
启动容器docker run -d --name 名字 -p 端口:端口 镜像后台运行容器
docker run -d -v 宿主机路径:容器路径 ...挂载数据卷
docker run -d -e KEY=VALUE ...设置环境变量
docker run -it 镜像 /bin/bash前台交互模式
查看状态docker ps查看运行中的容器
docker ps -a查看所有容器(含已停止)
docker stats查看资源使用(CPU/内存)
docker inspect <容器>查看容器详情
日志排查docker logs -f <容器>实时跟踪日志
docker logs --tail 100 <容器>查看最近 100 行
生命周期docker start <容器>启动容器
docker stop <容器>停止容器
docker restart <容器>重启容器
docker rm <容器>删除容器
进入容器docker exec -it <容器> /bin/bash进入容器终端
docker exec <容器> 命令在容器内执行命令
文件拷贝docker cp <源> <目标>宿主机和容器之间拷贝文件
网络docker network ls查看网络列表
docker network create 名字创建网络
数据卷docker volume ls查看数据卷列表
docker volume create 名字创建数据卷
系统清理docker system df查看磁盘占用
docker system prune -a清理所有无用资源

Docker Compose 常用命令

场景命令说明
安装验证docker-compose --version查看版本
启动服务docker-compose up -d后台启动所有服务
docker-compose up前台启动(看日志)
docker-compose up -d --build重新构建并启动
查看状态docker-compose ps查看服务状态
docker-compose images查看使用的镜像
docker-compose config验证 YAML 语法
日志排查docker-compose logs -f实时查看所有日志
docker-compose logs -f <服务名>查看指定服务日志
docker-compose logs --tail 200 <服务>查看最近 200 行
生命周期docker-compose down停止并删除所有服务
docker-compose down -v停止并删除数据卷(⚠️ 慎用)
docker-compose restart重启所有服务
docker-compose pause / unpause暂停 / 恢复
管理单服务docker-compose up -d <服务名>启动指定服务
docker-compose stop <服务名>停止指定服务
docker-compose restart <服务名>重启指定服务
进入容器docker-compose exec <服务名> /bin/sh进入服务容器
docker-compose exec mysql mysql -uroot -p进入 MySQL 命令行
扩展更新docker-compose pull拉取最新镜像
docker-compose up -d重新创建容器
docker-compose up -d --scale 服务=3扩展实例数

🐟 实战:用 Docker Compose 部署摸鱼看板

来看一个真实案例——用 Docker Compose 一键部署摸鱼看板,包含应用服务、MySQL 数据库和 Redis 缓存。

前置要求

  • Docker 20.10+
  • Docker Compose 2.0+

部署步骤

1. 获取部署包

联系技术支持获取 Docker Compose 部署包(微信号:moyu-boby,添加时备注"Docker Compose 部署")

2. 启动服务

bash
docker-compose up -d

4. 访问系统

浏览器打开 http://localhost:8080,默认账号:admin / 12345678

升级方式

bash
docker-compose pull
docker-compose up -d

是不是比传统部署方式简单了很多?过去需要几个小时配置环境的工作,现在几条命令就搞定了。


🏁 总结

Docker 和 Docker Compose 已经成为现代软件部署的标配工具。掌握它们不需要理解底层原理,只需要记住常用命令 + 理解核心概念 + 多用多练

给初学者的三条建议:

  1. 先用再学:不要试图一次记住所有命令,先跑通一个容器,再逐步学习高级用法
  2. 善用日志:遇到问题先 docker logs,90% 的问题都能在日志中找到答案
  3. 数据持久化:重要数据一定要用数据卷挂载,否则容器一删数据全丢

给有经验用户的三条建议:

  1. 统一用 Docker Compose:管理多个服务比手写 docker run 命令高效得多
  2. 环境变量外置:用 .env 文件管理配置,不要把密码写死在 YAML 里
  3. 日志轮转 + 资源限制:防止日志撑爆磁盘、容器吃掉所有内存

希望这篇文章能成为你日常使用 Docker 时的速查手册,遇到问题随时翻出来看看。


🔗 相关阅读

Released under the License.