Docker常用命令有哪些?掌握这些Docker命令,让容器管理事半功倍

2025-11-03 20:21:14 0点赞 4收藏 0评论

作为一名技术工程师,掌握Docker命令是现代软件开发和运维中不可或缺的技能。Docker作为容器技术的领军者,其强大的命令行工具为我们提供了高效的容器管理能力。本文将系统性地介绍Docker的常用命令,帮助您在容器管理工作中事半功倍。

Docker常用命令有哪些?掌握这些Docker命令,让容器管理事半功倍

一、Docker命令基础概念

1.1 Docker命令结构解析

Docker命令遵循统一的格式规范:

docker [OPTIONS] COMMAND [ARG...]

基本组成部分:

  • docker:Docker客户端程序

  • [OPTIONS]:全局选项,如--version、--help

  • COMMAND:具体的操作命令,如run、build、pull

  • [ARG...]:命令参数

获取帮助信息:

# 查看Docker版本和基本信息 docker --version docker version # 获取命令帮助 docker --help docker run --help

1.2 Docker命令分类概览

Docker命令可以按功能分为五大类:

  1. 镜像管理命令:pull、push、build、images、rmi等

  2. 容器生命周期命令:run、start、stop、rm、exec等

  3. 网络管理命令:network create、network ls等

  4. 存储管理命令:volume create、volume ls等

  5. 系统信息命令:info、stats、system等

二、镜像管理核心命令

2.1 镜像获取与查看

拉取镜像:

# 拉取最新版本镜像 docker pull nginx # 拉取指定版本镜像 docker pull nginx:1.20.1 # 拉取指定仓库的镜像 docker pull registry.cn-hangzhou.aliyuncs.com/library/nginx

查看本地镜像:

# 列出所有镜像 docker images # 查看镜像详细信息 docker images --format "table {{.Repository}}t{{.Tag}}t{{.Size}}" # 过滤特定镜像 docker images nginx

搜索镜像:

# 在Docker Hub搜索镜像 docker search nginx # 限制搜索结果数量 docker search --limit 5 nginx

查看镜像详细信息:

# 查看镜像完整信息 docker inspect nginx:latest # 查看镜像的环境变量 docker inspect nginx:latest | grep -A 10 "Env"

2.2 镜像构建与管理

构建镜像:

# 从Dockerfile构建镜像 docker build -t myapp:1.0 . # 指定Dockerfile路径 docker build -t myapp:1.0 -f /path/to/Dockerfile . # 构建时传递参数 docker build --build-arg ENV=production -t myapp:1.0 .

镜像标签管理:

# 为镜像添加新标签 docker tag nginx:latest my-nginx:v1.0 # 为镜像添加多个标签 docker tag myapp:1.0 myapp:latest docker tag myapp:1.0 registry.example.com/myapp:1.0

删除镜像:

# 删除单个镜像 docker rmi nginx:latest # 删除多个镜像 docker rmi nginx:latest mysql:8.0 # 强制删除镜像(即使有容器使用) docker rmi -f nginx:latest # 删除所有悬空镜像 docker rmi $(docker images -f "dangling=true" -q)

查看镜像历史:

# 查看镜像构建历史 docker history nginx:latest # 显示完整的命令 docker history --no-trunc nginx:latest

三、容器生命周期管理命令

3.1 容器创建与启动

创建并运行容器:

# 基本运行命令 docker run nginx # 后台运行容器 docker run -d nginx # 指定容器名称 docker run -d --name my-nginx nginx # 端口映射 docker run -d -p 8080:80 --name my-nginx nginx # 挂载数据卷 docker run -d -p 8080:80 -v /host/path:/container/path nginx # 设置环境变量 docker run -d -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0 # 交互式运行 docker run -it ubuntu:20.04 /bin/bash

创建容器(不启动):

# 只创建容器 docker create --name my-container nginx # 后续启动容器 docker start my-container

常用参数详解:

  • -d:后台运行(detached模式)

  • -p:端口映射,格式为宿主机端口:容器端口

  • -v:数据卷挂载,格式为宿主机路径:容器路径

  • --name:指定容器名称

  • -e:设置环境变量

  • -it:交互式终端(-i保持输入开放,-t分配伪终端)

  • --rm:容器停止后自动删除

  • --network:指定网络模式

3.2 容器状态管理

查看容器状态:

# 查看运行中的容器 docker ps # 查看所有容器(包括停止的) docker ps -a # 查看最近创建的容器 docker ps -l # 自定义显示格式 docker ps --format "table {{.Names}}t{{.Status}}t{{.Ports}}" # 查看容器详细信息 docker inspect my-nginx

停止容器:

# 优雅停止容器 docker stop my-nginx # 强制停止容器 docker kill my-nginx # 停止所有运行中的容器 docker stop $(docker ps -q)

重启容器:

# 重启单个容器 docker restart my-nginx # 重启多个容器 docker restart container1 container2

暂停和恢复容器:

# 暂停容器 docker pause my-nginx # 恢复容器 docker unpause my-nginx

3.3 容器操作与维护

进入运行中的容器:

# 在容器中执行命令 docker exec -it my-nginx /bin/bash # 执行单个命令 docker exec my-nginx nginx -t # 以root用户身份进入容器 docker exec -it --user root my-nginx /bin/bash

查看容器日志:

# 查看容器日志 docker logs my-nginx # 实时查看日志 docker logs -f my-nginx # 查看最近的日志行数 docker logs --tail 100 my-nginx # 查看指定时间段的日志 docker logs --since "2023-01-01" --until "2023-01-02" my-nginx

文件拷贝:

# 从容器拷贝文件到宿主机 docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf # 从宿主机拷贝文件到容器 docker cp ./index.html my-nginx:/usr/share/nginx/html/ # 拷贝整个目录 docker cp my-nginx:/var/log ./logs

删除容器:

# 删除停止的容器 docker rm my-nginx # 强制删除运行中的容器 docker rm -f my-nginx # 删除所有停止的容器 docker rm $(docker ps -a -q) # 运行完成后自动删除容器 docker run --rm -it ubuntu:20.04 /bin/bash

四、网络与存储管理命令

4.1 网络管理

查看网络:

# 列出所有网络 docker network ls # 查看网络详细信息 docker network inspect bridge

创建网络:

# 创建桥接网络 docker network create my-network # 创建指定子网的网络 docker network create --subnet=172.20.0.0/16 my-custom-network # 创建overlay网络(用于Swarm) docker network create -d overlay my-overlay-network

网络连接管理:

# 将容器连接到网络 docker network connect my-network my-container # 断开容器网络连接 docker network disconnect my-network my-container # 创建容器时指定网络 docker run -d --network my-network --name web nginx

查看端口映射:

# 查看容器端口映射 docker port my-nginx # 查看指定端口映射 docker port my-nginx 80

4.2 数据卷管理

查看数据卷:

# 列出所有数据卷 docker volume ls # 查看数据卷详细信息 docker volume inspect my-volume

创建数据卷:

# 创建命名数据卷 docker volume create my-volume # 创建带驱动的数据卷 docker volume create --driver local my-local-volume

使用数据卷:

# 挂载命名数据卷 docker run -d -v my-volume:/data nginx # 挂载宿主机目录 docker run -d -v /host/data:/container/data nginx # 只读挂载 docker run -d -v /host/data:/container/data:ro nginx

删除数据卷:

# 删除指定数据卷 docker volume rm my-volume # 删除所有未使用的数据卷 docker volume prune

五、系统监控与信息查看命令

5.1 系统状态监控

查看Docker系统信息:

# 查看Docker详细信息 docker info # 查看Docker版本信息 docker version # 检查Docker系统状态 docker system info

实时监控容器资源:

# 查看所有容器的资源使用情况 docker stats # 查看指定容器的资源使用 docker stats my-nginx # 只显示一次统计信息 docker stats --no-stream # 自定义显示格式 docker stats --format "table {{.Container}}t{{.CPUPerc}}t{{.MemUsage}}"

查看磁盘使用情况:

# 查看Docker磁盘使用情况 docker system df # 查看详细的磁盘使用信息 docker system df -v

5.2 系统清理与维护

系统清理:

# 清理系统(删除所有未使用的资源) docker system prune # 强制清理(包括未使用的镜像) docker system prune -a # 清理指定时间前的资源 docker system prune --filter "until=24h"

分类清理:

# 清理停止的容器 docker container prune # 清理悬空镜像 docker image prune # 清理所有未使用的镜像 docker image prune -a # 清理未使用的数据卷 docker volume prune # 清理未使用的网络 docker network prune

六、实战场景应用案例

6.1 Web应用部署场景

部署Nginx服务器

# 1. 拉取Nginx镜像 docker pull nginx:latest # 2. 创建自定义配置目录 mkdir -p /opt/nginx/{conf,html,logs} # 3. 运行Nginx容器 docker run -d --name production-nginx -p 80:80 -p 443:443 -v /opt/nginx/conf:/etc/nginx/conf.d -v /opt/nginx/html:/usr/share/nginx/html -v /opt/nginx/logs:/var/log/nginx --restart unless-stopped nginx:latest # 4. 查看运行状态 docker ps | grep nginx docker logs production-nginx

多容器应用编排示例:

# 1. 创建自定义网络 docker network create webapp-network # 2. 启动MySQL数据库 docker run -d --name mysql-db --network webapp-network -e MYSQL_ROOT_PASSWORD=secret123 -e MYSQL_DATABASE=webapp -v mysql-data:/var/lib/mysql mysql:8.0 # 3. 启动应用服务器 docker run -d --name app-server --network webapp-network -e DB_HOST=mysql-db -e DB_PASSWORD=secret123 my-app:latest # 4. 启动Nginx反向代理 docker run -d --name nginx-proxy --network webapp-network -p 80:80 -v ./nginx.conf:/etc/nginx/nginx.conf nginx:latest

6.2 开发环境搭建场景

快速搭建开发数据库:

# Redis开发环境 docker run -d --name dev-redis -p 6379:6379 redis:alpine # MongoDB开发环境 docker run -d --name dev-mongo -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=password mongo:latest # PostgreSQL开发环境 docker run -d --name dev-postgres -p 5432:5432 -e POSTGRES_PASSWORD=password -e POSTGRES_DB=devdb -v postgres-data:/var/lib/postgresql/data postgres:13

开发工具容器化:

# Node.js开发环境 docker run -it --rm -v $(pwd):/app -w /app -p 3000:3000 node:16-alpine sh # Python开发环境 docker run -it --rm -v $(pwd):/workspace -w /workspace python:3.9-slim python app.py

七、命令组合与高效技巧

7.1 命令组合使用技巧

管道操作示例:

# 查找并删除特定镜像 docker images | grep "nginx" | awk '{print $3}' | xargs docker rmi # 停止所有运行中的容器 docker ps -q | xargs docker stop # 删除所有退出状态的容器 docker ps -a | grep "Exited" | awk '{print $1}' | xargs docker rm # 查看容器占用的端口 docker ps --format "table {{.Names}}t{{.Ports}}" | grep "80"

批量操作技巧:

# 批量拉取镜像 images=("nginx:latest" "mysql:8.0" "redis:alpine") for image in "${images[@]}"; do docker pull "$image" done # 批量删除特定标签的镜像 docker images | grep "^" | awk '{print $3}' | xargs docker rmi # 批量导出镜像 for image in $(docker images --format "{{.Repository}}:{{.Tag}}"); do docker save "$image" -o "${image////_}.tar" done

条件过滤与格式化:

# 查看占用内存最多的容器 docker stats --no-stream --format "table {{.Container}}t{{.MemUsage}}" | sort -k2 -hr # 查看特定时间启动的容器 docker ps --filter "since=2023-01-01" --format "table {{.Names}}t{{.CreatedAt}}" # 查看健康检查失败的容器 docker ps --filter "health=unhealthy" # 查看指定网络中的容器 docker ps --filter "network=my-network"

7.2 提升效率的最佳实践

设置别名和快捷命令:

# 在 ~/.bashrc 或 ~/.zshrc 中添加 alias dps='docker ps' alias dpa='docker ps -a' alias di='docker images' alias dex='docker exec -it' alias dlog='docker logs -f' alias dstop='docker stop' alias drm='docker rm' alias drmi='docker rmi' # 复合别名 alias dclean='docker system prune -f' alias dstopall='docker stop $(docker ps -q)' alias drmall='docker rm $(docker ps -a -q)'

脚本自动化管理:

#!/bin/bash # docker-manage.sh - Docker管理脚本 case "$1" in "clean") echo "清理Docker系统..." docker system prune -f docker volume prune -f ;; "backup") echo "备份Docker镜像..." docker images --format "{{.Repository}}:{{.Tag}}" | while read image; do docker save "$image" | gzip > "backup_${image////_}.tar.gz" done ;; "monitor") echo "监控容器状态..." watch -n 1 'docker stats --no-stream' ;; *) echo "使用方法: $0 {clean|backup|monitor}" ;; esac

常见问题排查命令:

# 检查容器健康状态 docker inspect --format='{{.State.Health.Status}}' container_name # 查看容器启动失败原因 docker logs --details container_name # 检查端口占用情况 docker ps --format "table {{.Names}}t{{.Ports}}" | grep ":80" # 查看容器资源限制 docker inspect container_name | grep -A 10 "Resources" # 检查网络连通性 docker exec container_name ping -c 3 google.com # 查看容器进程 docker exec container_name ps aux

八、总结与进阶建议

8.1 命令学习路径总结

新手必掌握的基础命令:

  1. docker run - 运行容器的核心命令

  2. docker ps - 查看容器状态

  3. docker images - 管理镜像

  4. docker logs - 查看日志

  5. docker exec - 进入容器

  6. docker stop/start - 控制容器状态

进阶使用的高级命令:

  1. docker build - 构建自定义镜像

  2. docker network - 网络管理

  3. docker volume - 数据卷管理

  4. docker stats - 性能监控

  5. docker system - 系统管理

生产环境的关键命令:

  1. docker inspect - 详细信息查看

  2. docker logs --since --until - 日志分析

  3. docker system prune - 系统清理

  4. docker save/load - 镜像备份恢复

  5. docker export/import - 容器备份恢复

8.2 持续学习建议

Docker Compose进阶: 掌握基础Docker命令后,建议学习Docker Compose来管理多容器应用:

version: '3.8' services: web: image: nginx ports: - "80:80" db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: secret

Kubernetes命令对比: 了解Docker命令与Kubernetes命令的对应关系,为容器编排做准备:

  • docker run ↔ kubectl run

  • docker ps ↔ kubectl get pods

  • docker logs ↔ kubectl logs

容器最佳实践参考:

  1. 安全性:使用非root用户运行容器

  2. 资源限制:设置内存和CPU限制

  3. 健康检查:配置容器健康检查

  4. 日志管理:合理配置日志驱动和轮转

  5. 镜像优化:使用多阶段构建减小镜像体积

持续学习资源:

  • Docker官方文档

  • 容器技术社区博客

  • 实际项目实践

  • 云原生技术栈学习


通过本文的系统介绍,相信您已经对Docker的常用命令有了全面的了解。Docker命令虽然众多,但只要掌握其规律和分类,配合实际项目练习,就能够熟练运用这些工具来提升容器管理效率。

记住,工具只是手段,真正的价值在于如何将这些命令组合起来解决实际问题。建议您在学习过程中多动手实践,从简单的单容器应用开始,逐步过渡到复杂的多容器架构,这样才能真正掌握Docker的精髓,让容器管理工作事半功倍。

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
4
扫一下,分享更方便,购买更轻松