# Docker 安装与使用指南
macOS 环境 | Docker Desktop | 2026-04-24
# 一、安装步骤
# 1. 当前环境状态
| 组件 | 状态 | 版本 |
|---|---|---|
| ------ | ------ | ------ |
| Docker CLI | ✅ 已安装 | v29.4.1 |
| Docker Desktop | ❌ 未安装 | 需要手动安装 |
# 2. 安装 Docker Desktop
# 方法一:Homebrew(推荐)
# 安装 Docker Desktop
brew install --cask docker
# 安装完成后启动
open -a Docker
# 方法二:官网下载
- 访问 https://www.docker.com/products/docker-desktop/
- 下载 macOS Apple Chip 版本
- 双击
.dmg文件 - 拖拽 Docker.app 到 Applications 文件夹
- 双击运行 Docker.app
# 3. 验证安装
# 等待 Docker 启动(状态栏出现鲸鱼图标)
docker ps
# 运行测试容器
docker run hello-world
# 查看版本
docker --version
docker compose version
# 二、基础使用
# 1. 镜像操作
# 搜索镜像
docker search nginx
# 拉取镜像
docker pull nginx:latest
# 查看本地镜像
docker images
# 删除镜像
docker rmi nginx:latest
# 清理未使用的镜像
docker image prune -a
# 2. 容器操作
# 运行容器(前台)
docker run nginx
# 运行容器(后台)
docker run -d nginx
# 运行容器(端口映射 + 后台)
docker run -d -p 8080:80 nginx
# 运行容器(挂载目录)
docker run -d -p 8080:80 -v /data:/usr/share/nginx/html nginx
# 查看运行中的容器
docker ps
# 查看所有容器(包括已停止)
docker ps -a
# 停止容器
docker stop <container_id>
# 启动容器
docker start <container_id>
# 重启容器
docker restart <container_id>
# 删除容器
docker rm <container_id>
# 强制删除运行中的容器
docker rm -f <container_id>
# 查看容器日志
docker logs <container_id>
# 实时查看日志
docker logs -f <container_id>
# 进入容器
docker exec -it <container_id> /bin/bash
# 3. 数据卷
# 创建数据卷
docker volume create my-data
# 查看数据卷
docker volume ls
# 删除数据卷
docker volume rm my-data
# 清理未使用的数据卷
docker volume prune
# 三、Docker Compose 使用
# 1. 基本结构
创建 docker-compose.yml:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
restart: always
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydb
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
restart: always
volumes:
mysql-data:
# 2. 常用命令
# 启动所有服务(后台)
docker compose up -d
# 启动并查看日志
docker compose up
# 停止所有服务
docker compose down
# 停止并删除数据卷
docker compose down -v
# 查看服务状态
docker compose ps
# 查看服务日志
docker compose logs
# 查看特定服务日志
docker compose logs -f web
# 重新构建并启动
docker compose up -d --build
# 暂停服务
docker compose pause
# 恢复服务
docker compose unpause
# 四、Dockerfile 基础
# 1. 示例:Spring Boot 应用
# 多阶段构建
FROM eclipse-temurin:17-jdk-alpine AS builder
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN ./mvnw clean package -DskipTests
# 运行阶段
FROM eclipse-temurin:17-jre-alpine
WORKDIR /app
COPY --from=builder /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
# 2. 构建与运行
# 构建镜像
docker build -t myapp:1.0 .
# 指定 Dockerfile
docker build -f Dockerfile.prod -t myapp:1.0 .
# 运行
docker run -d -p 8080:8080 myapp:1.0
# 五、常用镜像配置
# MySQL
docker run -d \
--name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
-e MYSQL_DATABASE=testdb \
-v mysql-data:/var/lib/mysql \
mysql:8.0
# 进入 MySQL
docker exec -it mysql mysql -uroot -proot
# Redis
docker run -d \
--name redis \
-p 6379:6379 \
-v redis-data:/data \
redis:7.0
# 进入 Redis CLI
docker exec -it redis redis-cli
# MinIO
docker run -d \
--name minio \
-p 9000:9000 \
-p 9001:9001 \
-e MINIO_ROOT_USER=minioadmin \
-e MINIO_ROOT_PASSWORD=minioadmin \
-v minio-data:/data \
minio/minio server /data --console-address ":9001"
# Nginx
docker run -d \
--name nginx \
-p 80:80 \
-v ./nginx.conf:/etc/nginx/nginx.conf \
-v ./html:/usr/share/nginx/html \
nginx:latest
# 六、网络配置
# 查看网络
docker network ls
# 创建网络
docker network create my-network
# 连接容器到网络
docker network connect my-network container-name
# 断开连接
docker network disconnect my-network container-name
# 删除网络
docker network rm my-network
# 查看网络详情
docker network inspect my-network
# 七、清理与维护
# 清理所有未使用的资源
docker system prune -a
# 清理容器
docker container prune
# 清理镜像
docker image prune -a
# 清理数据卷
docker volume prune
# 清理网络
docker network prune
# 查看磁盘使用
docker system df
# 八、常见问题
# 1. Docker Desktop 启动失败
# 重置 Docker Desktop
open -a Docker
# 等待 2-3 分钟
# 如果仍失败,重置到出厂设置
# Docker Desktop → Settings → Reset → Reset to factory defaults
# 2. 端口冲突
# 查看端口占用
lsof -i :8080
# 更换端口
docker run -d -p 8081:80 nginx
# 3. 镜像拉取慢(配置镜像加速)
Docker Desktop → Settings → Docker Engine → 添加:
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://registry.docker-cn.com"
]
}
# 4. 容器内时区不正确
# 启动时指定时区
docker run -e TZ=Asia/Shanghai myapp
# 或在 Dockerfile 中
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 九、实用技巧
# 1. 批量操作
# 停止所有容器
docker stop $(docker ps -q)
# 删除所有容器
docker rm $(docker ps -aq)
# 删除所有镜像
docker rmi $(docker images -q)
# 一键清理
docker system prune -a --volumes -f
# 2. 查看容器资源使用
# 实时查看
docker stats
# 查看容器进程
docker top <container_id>
# 3. 导出/导入镜像
# 导出
docker save -o myapp.tar myapp:1.0
# 导入
docker load -i myapp.tar
# 十、推荐工具
| 工具 | 说明 | 安装 |
|---|---|---|
| ------ | ------ | ------ |
| Portainer | Web UI 管理 | docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer |
| Lazydocker | 终端 UI | brew install lazydocker |
| Dive | 镜像层分析 | brew install dive |
| Docker Compose | 多容器编排 | 已内置 |
注意: Docker Desktop 个人版免费用于个人开发,企业使用需购买订阅。