一、Docker核心概念
概念 |
说明 |
镜像(Image) |
只读模板,包含运行程序所需的所有文件(代码、环境、配置等)。镜像是容器的基础。 |
容器(Container) |
镜像的运行实例,是轻量级的虚拟化环境。每个容器拥有独立进程空间、文件系统、网络等资源。 |
仓库(Repository) |
存储镜像的集合,类似Git仓库。分为:•公共仓库:Docker Hub(官方)•私有仓库:企业自建 |
注册中心(Registry) |
托管仓库的服务(如Docker Hub、Harbor)。 |
二、核心命令总结
镜像管理
命令 |
用途 |
docker pull nginx:alpine |
拉取镜像 |
docker images |
列出本地镜像 |
docker rmi <image_id> |
删除镜像 |
docker build -t myapp:v1 . |
构建镜像(基于Dockerfile) |
容器管理
命令 |
用途 |
docker run -d -p 80:80 --name myweb nginx |
启动容器(后台运行) |
docker ps -a |
查看所有容器(包含已停止的) |
docker stop <container_id> |
停止容器 |
docker start/restart <container_id> |
启动/重启容器 |
docker rm -f <container_id> |
强制删除容器 |
docker exec -it <container_id> sh |
进入容器终端 |
docker logs <container_id> |
查看容器日志 |
网络与数据卷
命令 |
用途 |
docker network create mynet |
创建自定义网络 |
docker volume create mydata |
创建数据卷 |
docker run -v /host/path:/data ... |
挂载主机目录到容器 |
三、Dockerfile核心指令
Dockerfile 是构建镜像的脚本文件,常用指令如下:
指令 |
作用 |
示例 |
FROM |
指定基础镜像 |
FROM python:3.9-slim |
RUN |
执行命令(安装依赖等) |
RUN apt update && apt install -y curl |
COPY |
复制文件(主机→镜像) |
COPY ./app /usr/src/app |
ADD |
类似COPY,支持URL和自动解压 |
ADD app.tar.gz /data |
WORKDIR |
设置工作目录 |
WORKDIR /app |
EXPOSE |
声明容器运行时监听的端口 |
EXPOSE 8080 |
ENV |
设置环境变量 |
ENV DB_HOST=db |
CMD |
容器启动时的默认命令(可被覆盖) |
CMD ["python", "app.py"] |
ENTRYPOINT |
容器入口命令(不可覆盖) |
ENTRYPOINT ["/entrypoint.sh"] |
最佳实践:
- 多阶段构建:减少镜像大小(如编译环境→运行环境分离)
- 合并
RUN
指令:减少镜像层数
- 使用
.dockerignore
:排除不需要的文件
四、Docker Compose
用于管理多容器应用,通过 docker-compose.yml
文件配置服务。
核心概念
概念 |
说明 |
服务(Service) |
一个容器(如Web服务、数据库) |
项目(Project) |
一组关联服务(默认使用当前目录名作为项目名) |
常用命令
命令 |
用途 |
docker-compose up -d |
启动所有服务(后台运行) |
docker-compose down |
停止并删除所有容器 |
docker-compose ps |
查看项目中的容器状态 |
docker-compose logs -f web |
跟踪Web服务的日志 |
示例docker-compose.yml
yaml下载复制version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_PASSWORD: password
核心字段说明:
volumes
:挂载数据卷或主机目录
ports
:端口映射(主机端口:容器端口)
depends_on
:依赖顺序(不等待服务就绪,仅控制启动顺序)
environment
:设置环境变量
networks
:自定义网络
五、其他关键知识
- 数据持久化:
- Bind Mounts:直接挂载主机目录(开发环境常用)
- Volumes:Docker管理的持久化存储(生产环境推荐)
- 网络模式:
bridge
:默认桥接网络(容器间通过IP通信)
host
:共享主机网络(无隔离)
overlay
:跨主机容器通信(Swarm集群)
- 安全实践:
- 非root用户运行容器(
USER
指令)
- 定期更新基础镜像修复漏洞
- 避免使用
--privileged
特权模式
- 容器编排进阶:
- Kubernetes:生产级容器编排(替代Docker Swarm)
- Helm:K8s应用包管理工具
六、学习路径建议
- 基础操作:镜像/容器管理 → Dockerfile → Docker Compose
- 生产实践:多阶段构建 → 容器日志管理 → 监控(cAdvisor)
- 进阶方向:镜像安全扫描(Trivy)→ CI/CD集成 → Kubernetes
提示:学习时推荐使用 --help
(如 docker run --help
)查看命令详细说明,或用 docker stats
实时监控资源占用。
评论区