Docker常用命令笔记
Docker常用命令笔记
一、Docker 基础命令
1. 查看 Docker 状态
# 查看 Docker 版本信息
docker version# 查看 Docker 系统信息(包括镜像、容器、存储驱动等)
docker info# 查看 Docker 磁盘占用情况
docker system df
二、镜像管理
1. 拉取镜像
# 从远程仓库拉取镜像(默认拉取 latest 标签)
docker pull nginx# 指定标签拉取镜像
docker pull nginx:1.23
2. 列出本地镜像
# 列出所有本地镜像
docker images# 仅显示镜像 ID
docker images -q# 显示所有镜像(含中间层镜像)
docker images -a
3. 构建镜像
# 使用当前目录的 Dockerfile 构建镜像,并指定标签
docker build -t my-nginx:1.0 .# 构建时指定构建参数(如设置环境变量)
docker build --build-arg VERSION=1.0 -t my-app .
4. 删除镜像
# 删除指定镜像(通过镜像 ID 或名称)
docker rmi nginx:1.23# 删除所有未使用的镜像(悬空镜像)
docker image prune -a
三、容器操作
1. 运行容器
# 启动一个交互式容器(终端可输入命令)
docker run -it ubuntu bash# 后台运行容器(并指定名称)
docker run -d --name my-container nginx# 端口映射(将宿主机 8080 映射到容器 80)
docker run -p 8080:80 nginx# 设置环境变量
docker run -e MY_ENV_VAR=value nginx# 挂载目录(将宿主机 /data 映射到容器 /app)
docker run -v /data:/app nginx
2. 查看容器
# 查看正在运行的容器
docker ps# 查看所有容器(包括已停止的)
docker ps -a# 查看容器详细信息(如 IP、端口、挂载点)
docker inspect my-container
3. 启动/停止/重启容器
# 启动已停止的容器
docker start my-container# 停止运行中的容器
docker stop my-container# 重启容器
docker restart my-container
4. 删除容器
# 删除已停止的容器
docker rm my-container# 强制删除运行中的容器
docker rm -f my-container# 删除所有已停止的容器
docker container prune
5. 进入容器
# 在运行中的容器内执行命令(如 ls /app)
docker exec my-container ls /app# 交互式进入容器(启动 Bash 终端)
docker exec -it my-container bash# 以指定用户身份进入容器
docker exec -u user123 -it my-container bash# 在后台执行命令(如创建文件)
docker exec -d my-container touch /tmp/hello.txt
6. 查看容器日志
# 查看容器日志(默认最近 20 行)
docker logs my-container# 实时跟踪日志输出
docker logs -f my-container# 查看过去 10 分钟的日志
docker logs --since 10m my-container
四、网络管理
1. 查看网络
# 列出所有网络
docker network ls# 查看网络详细信息
docker network inspect bridge
2. 创建网络
# 创建桥接网络(单主机容器互联)
docker network create my-bridge-net# 创建覆盖网络(跨主机 Swarm 集群)
docker network create -d overlay my-overlay-net
3. 容器连接网络
# 启动容器时加入指定网络
docker run -d --name web --network my-bridge-net nginx# 将现有容器加入网络
docker network connect my-bridge-net web
4. 断开网络
# 将容器从网络中移除
docker network disconnect my-bridge-net web
五、数据卷管理
1. 创建数据卷
# 创建命名数据卷
docker volume create my-volume# 查看数据卷信息
docker volume inspect my-volume
2. 挂载数据卷
# 运行容器时挂载数据卷
docker run -d --name my-app -v my-volume:/data my-image# 挂载宿主机目录
docker run -d --name my-app -v /host/data:/data my-image
3. 删除数据卷
# 删除指定数据卷
docker volume rm my-volume# 删除所有未使用的数据卷
docker volume prune
六、其他实用命令
1. 清理资源
# 清理所有未使用的镜像、容器、网络、数据卷
docker system prune -a --volumes# 清理构建缓存
docker builder prune
2. 导出/导入容器
# 导出容器为 tar 文件
docker export my-container > my-container.tar# 从 tar 文件导入容器
docker import my-container.tar my-image
3. 提交容器为镜像
# 将容器提交为新镜像
docker commit my-container my-new-image
4. 推送镜像到仓库
# 推送镜像到 Docker Hub
docker push my-username/my-image:tag
七、高级操作
1. 容器生命周期管理
# 暂停容器进程
docker pause my-container# 恢复暂停的容器
docker unpause my-container# 强制终止容器(发送 SIGKILL 信号)
docker kill my-container
2. 容器资源限制
# 限制容器内存和 CPU(需 Docker Desktop 支持)
docker run -m 512m --cpus="1.5" my-image# 设置容器最大内存和交换分区
docker run -m 2g --memory-swap 4g my-image
3. 容器编排(Docker Compose 示例)
version: '3'
services:web:image: nginxports:- "8080:80"db:image: mysqlenvironment:MYSQL_ROOT_PASSWORD: root
八、最佳实践
-
使用
--rm
标志自动清理容器docker run --rm my-image
容器停止后自动删除,避免残留。
-
避免使用
latest
标签
指定明确版本号(如nginx:1.23
)以确保稳定性。 -
定期清理未使用资源
使用docker system prune
或脚本自动化清理。 -
使用 Dockerfile 构建可复用镜像
通过分层构建和缓存优化构建速度。 -
安全实践
- 使用
--read-only
挂载只读文件系统。 - 避免以
root
用户运行容器。
- 使用
九、常见问题排查
1. 容器启动失败
# 查看容器日志定位问题
docker logs my-container
2. 网络连接问题
# 检查容器 IP 和端口映射
docker inspect my-container
3. 磁盘空间不足
# 查看磁盘占用
docker system df# 清理未使用的资源
docker system prune -a --volumes
十、总结
Docker 的核心命令围绕 镜像、容器、网络、数据卷 展开,掌握以下流程可高效完成开发到部署的自动化:
- 镜像管理:
pull
→build
→push
- 容器操作:
run
→exec
→logs
→stop/rm
- 网络配置:
create
→connect
- 数据持久化:
volume create
→-v
挂载
通过组合使用这些命令,开发者可以快速搭建、调试和部署应用。同时,定期清理资源、优化镜像分层、合理使用网络和数据卷,是提升效率的关键。