Docker 用户手册

官方文档入口

英文原版: https://docs.docker.com/
中文社区版: https://docs.docker.cn/

安装docker

Windows (Docker Desktop)
https://www.docker.com/products/docker-desktop

Linux (Ubuntu)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
验证安装
docker --version
docker run hello-world

基本概念理解

镜像(Image): 只读模板,包含运行应用所需的所有内容
容器(Container): 镜像的运行实例
仓库(Registry): 存储镜像的地方(Docker Hub)

日常使用命令

镜像管理

# 搜索镜像
docker search nginx

# 拉取镜像
docker pull nginx:alpine

# 查看本地镜像
docker images

# 删除镜像
docker rmi nginx:alpine

# 构建镜像
docker build -t myapp:1.0 .

# 导出镜像
docker save -o myapp.tar myapp:1.0

# 导入镜像
docker load -i myapp.tar

容器管理

# 运行容器
docker run -d --name my-nginx -p 80:80 nginx:alpine

# 查看运行中的容器
docker ps

# 查看所有容器
docker ps -a

# 停止容器
docker stop my-nginx

# 启动容器
docker start my-nginx

# 重启容器
docker restart my-nginx

# 进入容器
docker exec -it my-nginx /bin/sh

# 查看容器日志
docker logs my-nginx

# 实时查看日志
docker logs -f my-nginx

# 删除容器
docker rm my-nginx

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

Dockerfile 详解

# 指定基础镜像
FROM node:16-alpine

# 设置工作目录
WORKDIR /app

# 复制文件
COPY package*.json ./
COPY . .

# 运行命令
RUN npm install

# 设置环境变量
ENV NODE_ENV=production

# 暴露端口
EXPOSE 3000

# 定义启动命令
CMD ["npm", "start"]

最佳实践

# 使用官方镜像
FROM node:16-alpine

# 使用标签
LABEL maintainer="your-email@example.com"

# 使用非root用户
RUN addgroup -g 1001 -S appgroup && \
   adduser -S appuser -u 1001

# 多阶段构建
FROM node:16-alpine AS builder
WORKDIR /app
COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html

Docker Compose

# docker-compose.yml
version: '3.8'
services:
 web:
   build: .
   ports:
     - "3000:3000"
   environment:
     - DATABASE_URL=postgres://user:pass@db:5432/mydb
   depends_on:
     - db

 db:
   image: postgres:13
   environment:
     POSTGRES_DB: mydb
     POSTGRES_USER: user
     POSTGRES_PASSWORD: pass
   volumes:
     - db_data:/var/lib/postgresql/data

volumes:
 db_data:

数据管理

# 创建卷
docker volume create mydata

# 查看卷
docker volume ls

# 查看卷详情
docker volume inspect mydata

# 删除卷
docker volume rm mydata

# 清理未使用卷
docker volume prune

使用示例

# 使用命名卷
docker run -d -v mydata:/app/data myapp

# 使用绑定挂载
docker run -d -v /host/path:/container/path myapp

# 使用只读挂载
docker run -d -v /host/path:/container/path:ro myapp

网络管理

网络命令

# 查看网络
docker network ls

# 创建网络
docker network create mynetwork

# 查看网络详情
docker network inspect mynetwork

# 连接容器到网络
docker network connect mynetwork mycontainer

# 断开网络连接
docker network disconnect mynetwork mycontainer

# 删除网络
docker network rm mynetwork

网络示例

# 创建自定义网络
docker network create app-network

# 运行容器并加入网络
docker run -d --name web --network app-network nginx
docker run -d --name db --network app-network redis

安全最佳实践

安全配置

# 使用非root用户
FROM node:16-alpine
RUN adduser -D -u 1001 appuser
USER appuser

# 定期更新基础镜像
FROM node:16-alpine

# 扫描安全漏洞
# 使用 docker scan myimage

运行时安全

# 限制资源
docker run -d \
  --memory=512m \
  --cpus=1.0 \
  --user=1001:1001 \
  myapp

# 只读根文件系统
docker run -d \
  --read-only \
  --tmpfs /tmp \
  myapp
  

Docker桌面版特定功能

Windows/macOS 特有功能

  • 1、图形化界面管理
  • 2、WSL2 集成 (Windows)
  • 3、文件共享配置
  • 4、资源限制设置
  • 5、Kubernetes 集成

配置示例

// Docker Desktop settings.json
{
  "features": {
    "buildkit": true
  },
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}

故障排除

常用诊断命令

# 查看系统信息
docker system info

# 查看磁盘使用
docker system df

# 查看详细磁盘使用
docker system df -v

# 查看事件
docker system events

# 性能监控
docker stats

容器内进程

docker top container_name

日志和调试

# 查看容器日志
docker logs container_name

# 实时日志
docker logs -f container_name

# 检查容器配置
docker inspect container_name

# 复制文件
docker cp container_name:/path/file.txt ./
docker cp file.txt container_name:/path/

生产环境建议

部署最佳实践

  • 1、使用编排工具: Docker Swarm 或 Kubernetes
  • 2、日志管理: 配置日志驱动和轮转
  • 3、监控告警: 设置资源监控和自动恢复
  • 4、备份策略: 定期备份重要数据卷
  • 5、安全扫描: 定期扫描镜像漏洞
    性能优化
# 限制资源使用
docker run -d \
  --memory=1g \
  --memory-swap=2g \
  --cpus=2.0 \
  --blkio-weight=500 \
  myapp

# 使用健康检查
HEALTHCHECK --interval=30s --timeout=3s \
  CMD curl -f http://localhost/health || exit 1

获取帮助

社区资源

  • 1、Docker 官方论坛: https://forums.docker.com/
  • 2、Stack Overflow: 使用 [docker] 标签
  • 3、GitHub Issues: https://github.com/docker
  • 4、中文社区: Docker 中文社区网站

学习资源

  • 1、Docker 官方教程: https://docs.docker.com/get-started/
  • 2、Play with Docker: 在线练习环境
  • 3、Docker 样本项目: https://github.com/docker/labs

更多推荐