本文翻译自我的英文博客,最新修订内容可随时参考:Docker命令速查表
一、守护进程(Daemon)管理
核心命令
systemctl start docker # 启动Docker服务
systemctl stop docker # 停止Docker服务
systemctl restart docker # 重启Docker服务
systemctl status docker # 查看服务状态
systemctl enable docker # 设置开机自启
状态查询
docker info # 查看Docker系统信息(版本、存储驱动、容器/镜像数量等)
docker system df # 查看磁盘占用(镜像、容器、卷的空间使用情况)
二、镜像(Images)操作
基础命令
命令 | 说明 |
---|---|
docker images | 列出本地所有镜像 |
docker pull ubuntu:22.04 | 拉取指定版本的Ubuntu镜像(docker.io/library/ubuntu:22.04 的简写) |
docker inspect ubuntu:22.04 | 查看镜像详细元数据(分层、作者、环境变量等) |
docker rmi ubuntu:22.04 | 删除指定镜像(-f 强制删除,-prune 清理悬空镜像) |
docker tag my-image:v1 timerring/my-image:v1 # 重命名镜像并添加仓库前缀
高级操作
镜像导入/导出
- 轻量级快照(export/import):
docker export -o ubuntu.tar my-container # 导出容器当前状态为tar包(不包含历史层) docker import ubuntu.tar my-ubuntu:v1 # 从tar包创建新镜像
- 完整镜像备份(save/load):
docker save -o ubuntu-all.tar ubuntu:20.04 ubuntu:22.04 # 打包多个镜像 docker load -i ubuntu-all.tar # 加载镜像包
悬空镜像清理
docker images -f dangling=true # 查看悬空镜像(无标签的旧版本镜像)
docker rmi $(docker images -q -f dangling=true) # 批量删除悬空镜像
三、Docker Hub 操作
登录与搜索
docker login -u timerring # 登录Docker Hub
docker search nginx # 搜索官方镜像(`--filter stars=3`按星级过滤)
镜像发布
docker tag my-app:v1 timerring/my-app:v1 # 添加仓库前缀
docker push timerring/my-app:v1 # 推送镜像到Docker Hub
四、容器(Containers)管理
生命周期控制
命令 | 说明 |
---|---|
docker run -itd ubuntu:22.04 | 拉取并运行容器(-i 交互模式,-t 分配终端,-d 后台运行) |
docker ps | 列出运行中容器(-a 显示所有容器,-q 仅返回ID) |
docker start/stop/restart my-container | 启停/重启容器 |
docker rm my-container | 删除容器(-f 强制删除运行中的容器,-v 同时删除关联卷) |
docker run -p 8080:80 -v /data:/app/data --name web-server nginx:alpine # 映射端口+挂载卷
交互与调试
docker attach my-container # 进入容器终端(`Ctrl+P + Ctrl+Q`退出但不停止容器)
docker exec -it my-container bash # 在运行的容器中执行命令(推荐方式)
docker logs -f my-container # 实时查看容器日志(`--tail 100`显示最后100行)
docker top my-container # 查看容器内运行的进程
数据管理
docker cp host-file.txt my-container:/app/ # 复制文件到容器
docker commit my-container my-image:v2 # 将容器状态保存为新镜像(不推荐用于构建,仅作快照)
批量清理
docker container prune # 删除所有已停止的容器
docker system prune -a # 清理所有无用镜像、容器、卷(谨慎使用!)
五、数据卷(Volumes)操作
核心命令
docker volume create my-vol # 创建命名卷
docker volume ls # 列出所有卷
docker volume inspect my-vol # 查看卷详情(存储路径、驱动等)
docker volume rm my-vol # 删除卷
卷挂载
命名卷(推荐)
docker run --mount source=my-vol,target=/app/data nginx # 挂载命名卷到容器路径
主机目录挂载
docker run -v /host/path:/container/path:ro nginx # 挂载主机目录(`:ro`设为只读)
关联容器
docker run --volumes-from my-container --name web2 nginx # 复用已有容器的卷配置
六、网络与端口映射
端口映射
docker run -p 80:80 -p 443:443 nginx # 映射宿主机端口到容器端口(宿主机:容器)
docker port my-container 80 # 查看容器端口映射情况
网络模式
docker run --network host nginx # 使用宿主机网络(容器直接暴露端口,无需映射)
docker network create my-net # 创建自定义网络(用于容器间通信)
docker run --network my-net --name web1 nginx
docker run --network my-net --name web2 nginx # 同一网络内容器可通过容器名直接通信
七、资源限制
docker run --memory 2g --cpu-shares 512 my-app # 限制容器内存为2GB,CPU权重512
docker update my-container --memory 4g # 动态调整运行中容器的资源限制
八、进阶技巧
Dockerfile 构建镜像
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
构建命令:
docker build -t my-python-app:v1 . # `-f`指定Dockerfile路径,`--no-cache`禁用缓存
多阶段构建(减少镜像体积)
FROM golang:1.20 as builder
WORKDIR /app
COPY . .
RUN go build -o my-app
FROM alpine:3.17
COPY --from=builder /app/my-app /usr/bin/my-app
CMD ["my-app"]
九、常用快捷键
- 进入容器后保持后台运行:
Ctrl+P + Ctrl+Q
- 容器内退出并停止容器:
exit
- 强制停止容器:
docker kill my-container
总结
掌握以上命令即可覆盖80%的日常Docker操作。建议结合实际场景练习,例如:
- 用
docker run -p 80:80 nginx
快速启动一个Web服务器。 - 通过
docker exec
进入容器修改配置,再用docker commit
制作自定义镜像。 - 使用卷挂载实现容器数据持久化(如数据库数据存储)。
如需深入学习Docker Compose或Kubernetes集群管理,欢迎访问博客获取更多资源:Docker命令速查表。