一、🖼️ 镜像管理命令
1. 查看镜像
docker images
# 或
docker image ls
常用参数:
-a: 显示所有镜像(包括中间层)-q: 只显示镜像 ID--digests: 显示摘要信息
2. 搜索镜像
docker search <关键词>
示例:
docker search nginx
docker search --filter stars=100 nginx # 筛选星标>100的
3. 拉取镜像
docker pull <镜像名>[:标签]
示例:
docker pull nginx # 默认latest版本
docker pull nginx:1.25.3 # 指定版本
docker pull mysql:8.0
4. 删除镜像
docker rmi <镜像ID或名称>
批量删除:
docker rmi $(docker images -q) # 删除所有镜像
docker rmi $(docker images -f "dangling=true" -q) # 删除悬空镜像
5. 构建镜像
docker build -t <镜像名>[:标签] <Dockerfile路径>
示例:
docker build -t myapp:1.0 .
docker build -t myapp:latest --no-cache . # 不使用缓存
6. 标记镜像
docker tag <源镜像> <新镜像名>[:标签]
示例:
docker tag nginx:latest myregistry.com/nginx:v1
7. 保存与加载镜像
# 保存镜像到文件
docker save -o nginx.tar nginx:latest
# 从文件加载镜像
docker load -i nginx.tar
二、📦 容器管理命令
1. 查看容器
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(包括停止的)
docker ps -l # 查看最新创建的容器
docker ps -n 5 # 查看最近创建的5个容器
2. 创建并运行容器 ⭐ 重点!
docker run [选项] <镜像> [命令]
常用参数详解:
# 基础运行
docker run nginx
# 后台运行
docker run -d nginx
# 端口映射
docker run -d -p 8080:80 nginx
# 主机8080端口 → 容器80端口
# 命名容器
docker run -d --name my-nginx nginx
# 环境变量
docker run -d -e MYSQL_ROOT_PASSWORD=123456 mysql
# 数据卷挂载
docker run -d -v /host/path:/container/path nginx
# 网络模式
docker run -d --network bridge nginx
# 资源限制
docker run -d --memory="512m" --cpus="1.5" nginx
# 重启策略
docker run -d --restart=always nginx
完整示例:
docker run -d \
--name my-web \
-p 8080:80 \
-v /data/html:/usr/share/nginx/html \
-e ENV=production \
--restart=unless-stopped \
nginx:latest
3. 启动/停止/重启容器
docker start <容器ID或名称>
docker stop <容器ID或名称>
docker restart <容器ID或名称>
# 强制停止
docker kill <容器ID或名称>
批量操作:
docker start $(docker ps -aq) # 启动所有容器
docker stop $(docker ps -q) # 停止所有运行中的容器
4. 删除容器
docker rm <容器ID或名称>
docker rm -f <容器ID> # 强制删除运行中的容器
# 删除所有停止的容器
docker container prune
# 删除所有容器
docker rm -f $(docker ps -aq)
5. 进入容器 ⭐ 重点!
# 方式1:exec(推荐)
docker exec -it <容器ID> bash
docker exec -it <容器ID> sh # 如果没有bash
# 方式2:attach(不推荐,退出会停止容器)
docker attach <容器ID>
exec 实用命令:
# 执行单条命令
docker exec my-nginx ls /etc
# 以root用户进入
docker exec -it -u root my-nginx bash
# 在容器内安装工具
docker exec -it my-nginx apt-get update
docker exec -it my-nginx apt-get install -y vim
6. 容器与主机间复制文件
# 从容器复制到主机
docker cp <容器ID>:/path/in/container /host/path
# 从主机复制到容器
docker cp /host/path <容器ID>:/path/in/container
示例:
docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf
docker cp ./index.html my-nginx:/usr/share/nginx/html/
三、📊 监控与调试命令
1. 查看日志
docker logs <容器ID>
docker logs -f <容器ID> # 实时跟踪日志
docker logs --tail 100 <容器ID> # 查看最后100行
docker logs --since 10m <容器ID> # 查看最近10分钟日志
2. 查看容器详情
docker inspect <容器ID>
docker inspect --format='{{.State.Running}}' <容器ID> # 格式化输出
3. 查看资源使用情况
docker stats # 实时监控所有容器
docker stats <容器ID> # 监控指定容器
docker stats --no-stream # 只显示当前快照
4. 查看容器进程
docker top <容器ID>
5. 查看端口映射
docker port <容器ID>
6. 查看容器文件系统变化
docker diff <容器ID>
四、🌐 网络管理命令
# 查看网络列表
docker network ls
# 创建网络
docker network create my-network
# 查看网络详情
docker network inspect bridge
# 连接容器到网络
docker network connect my-network my-container
# 断开网络连接
docker network disconnect my-network my-container
# 删除网络
docker network rm my-network
# 清理未使用的网络
docker network prune
五、💾 数据卷管理命令
# 查看数据卷列表
docker volume ls
# 创建数据卷
docker volume create my-volume
# 查看数据卷详情
docker volume inspect my-volume
# 删除数据卷
docker volume rm my-volume
# 清理未使用的数据卷
docker volume prune
使用数据卷:
docker run -d -v my-volume:/data nginx
六、🧹 系统清理命令
# 查看Docker磁盘使用情况
docker system df
# 清理所有未使用的资源(容器、网络、镜像、构建缓存)
docker system prune
# 包括未使用的镜像
docker system prune -a
# 包括数据卷
docker system prune -a --volumes
七、🔍 实用组合技巧
1. 快速清理停止的容器
docker container prune -f
2. 查看容器IP地址
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器ID>
3. 批量停止并删除容器
docker stop $(docker ps -q) && docker rm $(docker ps -aq)
4. 导出/导入容器
# 导出容器为tar文件
docker export <容器ID> > container.tar
# 导入为镜像
cat container.tar | docker import - myimage:latest
5. 查看容器启动命令
docker inspect -f '{{.Config.Cmd}}' <容器ID>