Appearance
资源汇总
官方资源
| 资源 | 地址 |
|---|---|
| Docker 官方文档 | https://docs.docker.com |
| Docker Hub | https://hub.docker.com |
| Docker GitHub | https://github.com/docker |
| Docker Blog | https://www.docker.com/blog |
| Docker Playground | https://labs.play-with-docker.com |
工具推荐
开发工具
| 工具 | 说明 | 地址 |
|---|---|---|
| Docker Desktop | Windows/macOS 桌面客户端 | docker.com/products/docker-desktop |
| OrbStack | macOS 轻量替代方案 | orbstack.dev |
| Portainer | Web 管理界面 | portainer.io |
| Lazydocker | 终端 TUI 管理界面 | github.com/jesseduffield/lazydocker |
| dive | 镜像层分析 | github.com/wagoodman/dive |
镜像安全
| 工具 | 说明 |
|---|---|
| Trivy | 开源漏洞扫描,支持镜像/代码/IaC |
| Docker Scout | Docker 官方内置扫描 |
| Snyk | 商业漏洞扫描,有免费额度 |
| Clair | CoreOS 开源漏洞分析 |
监控工具
| 工具 | 说明 |
|---|---|
| cAdvisor | 容器资源监控采集 |
| Prometheus | 时序指标存储 |
| Grafana | 可视化面板 |
| Loki | 日志聚合 |
| Portainer | Web 管理 + 基础监控 |
学习资源
在线课程
- Play with Docker — 免费在线 Docker 环境
- Docker 官方 Getting Started
- Katacoda Docker 课程
书籍推荐
- 《Docker 深入浅出》— Nigel Poulton 著,入门友好
- 《第一本 Docker 书》— James Turnbull 著
- 《Docker — 容器与容器云》— 浙大SEL实验室
- 《Kubernetes in Action》— 进阶容器编排
中文社区
镜像资源
国内镜像站
| 镜像站 | 加速地址 |
|---|---|
| DaoCloud | https://docker.m.daocloud.io |
| 网易云 | https://hub-mirror.c.163.com |
| 阿里云 | https://xxxx.mirror.aliyuncs.com(需登录获取) |
| 腾讯云 | https://mirror.ccs.tencentyun.com(内网免费) |
推荐官方镜像
bash
# Web 服务
nginx:alpine # Nginx
httpd:alpine # Apache
traefik:latest # 反向代理/负载均衡
# 数据库
mysql:8.0
postgres:16-alpine
mariadb:11
mongo:7.0
redis:7-alpine
elasticsearch:8.x
# 运行时
node:20-alpine
python:3.12-slim
golang:1.21-alpine
php:8.3-fpm-alpine
openjdk:17-alpine
# 工具
alpine:3.19 # 最小 Linux
busybox # 工具集
ubuntu:22.04
debian:bookworm-slimDockerfile 模板
通用 Dockerfile 模板
dockerfile
# 替换为适合你语言的基础镜像
FROM node:20-alpine AS production
LABEL org.opencontainers.image.title="My App" \
org.opencontainers.image.version="1.0.0"
ENV NODE_ENV=production
# 创建非 root 用户
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
WORKDIR /app
# 安装依赖(先复制,利用缓存)
COPY package*.json ./
RUN npm ci --only=production && npm cache clean --force
# 复制应用代码
COPY --chown=appuser:appgroup . .
USER appuser
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
CMD wget -qO- http://localhost:3000/health || exit 1
CMD ["node", "app.js"]通用 .dockerignore
.git/
.gitignore
node_modules/
dist/
build/
coverage/
.env
.env.*
*.log
logs/
README.md
docs/
tests/
.vscode/
.idea/
*.swp
.DS_Store
__pycache__/
*.pyc
.pytest_cache/
.venv/
vendor/通用 docker-compose.yml 模板
yaml
services:
app:
build:
context: .
dockerfile: Dockerfile
restart: unless-stopped
ports:
- "3000:3000"
environment:
NODE_ENV: production
env_file:
- .env
volumes:
- app-data:/app/data
networks:
- app-net
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
volumes:
app-data:
networks:
app-net:
driver: bridge