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

方法二:官网下载

  1. 访问 https://www.docker.com/products/docker-desktop/
  2. 下载 macOS Apple Chip 版本
  3. 双击 .dmg 文件
  4. 拖拽 Docker.app 到 Applications 文件夹
  5. 双击运行 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

十、推荐工具

工具说明安装
------------------
PortainerWeb UI 管理docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
Lazydocker终端 UIbrew install lazydocker
Dive镜像层分析brew install dive
Docker Compose多容器编排已内置

注意: Docker Desktop 个人版免费用于个人开发,企业使用需购买订阅。