首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >有哪些常见的Docker容器操作命令?掌握这些Docker命令,让容器管理事半功倍

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

原创
作者头像
AI产品库王老师
发布2025-11-03 20:23:51
发布2025-11-03 20:23:51
2580
举报

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

一、Docker命令基础概念

1.1 Docker命令结构解析

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

代码语言:bash
复制
docker [OPTIONS] COMMAND [ARG...]

基本组成部分:

  • docker:Docker客户端程序
  • [OPTIONS]:全局选项,如--version--help
  • COMMAND:具体的操作命令,如runbuildpull
  • [ARG...]:命令参数

获取帮助信息:

代码语言:bash
复制
# 查看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 镜像获取与查看

拉取镜像:

代码语言:bash
复制
# 拉取最新版本镜像
docker pull nginx

# 拉取指定版本镜像
docker pull nginx:1.20.1

# 拉取指定仓库的镜像
docker pull registry.cn-hangzhou.aliyuncs.com/library/nginx

查看本地镜像:

代码语言:bash
复制
# 列出所有镜像
docker images

# 查看镜像详细信息
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"

# 过滤特定镜像
docker images nginx

搜索镜像:

代码语言:bash
复制
# 在Docker Hub搜索镜像
docker search nginx

# 限制搜索结果数量
docker search --limit 5 nginx

查看镜像详细信息:

代码语言:bash
复制
# 查看镜像完整信息
docker inspect nginx:latest

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

2.2 镜像构建与管理

构建镜像:

代码语言:bash
复制
# 从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 .

镜像标签管理:

代码语言:bash
复制
# 为镜像添加新标签
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

删除镜像:

代码语言:bash
复制
# 删除单个镜像
docker rmi nginx:latest

# 删除多个镜像
docker rmi nginx:latest mysql:8.0

# 强制删除镜像(即使有容器使用)
docker rmi -f nginx:latest

# 删除所有悬空镜像
docker rmi $(docker images -f "dangling=true" -q)

查看镜像历史:

代码语言:bash
复制
# 查看镜像构建历史
docker history nginx:latest

# 显示完整的命令
docker history --no-trunc nginx:latest

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

3.1 容器创建与启动

创建并运行容器:

代码语言:bash
复制
# 基本运行命令
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

创建容器(不启动):

代码语言:bash
复制
# 只创建容器
docker create --name my-container nginx

# 后续启动容器
docker start my-container

常用参数详解:

  • -d:后台运行(detached模式)
  • -p:端口映射,格式为宿主机端口:容器端口
  • -v:数据卷挂载,格式为宿主机路径:容器路径
  • --name:指定容器名称
  • -e:设置环境变量
  • -it:交互式终端(-i保持输入开放,-t分配伪终端)
  • --rm:容器停止后自动删除
  • --network:指定网络模式

3.2 容器状态管理

查看容器状态:

代码语言:bash
复制
# 查看运行中的容器
docker ps

# 查看所有容器(包括停止的)
docker ps -a

# 查看最近创建的容器
docker ps -l

# 自定义显示格式
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

# 查看容器详细信息
docker inspect my-nginx

停止容器:

代码语言:bash
复制
# 优雅停止容器
docker stop my-nginx

# 强制停止容器
docker kill my-nginx

# 停止所有运行中的容器
docker stop $(docker ps -q)

重启容器:

代码语言:bash
复制
# 重启单个容器
docker restart my-nginx

# 重启多个容器
docker restart container1 container2

暂停和恢复容器:

代码语言:bash
复制
# 暂停容器
docker pause my-nginx

# 恢复容器
docker unpause my-nginx

3.3 容器操作与维护

进入运行中的容器:

代码语言:bash
复制
# 在容器中执行命令
docker exec -it my-nginx /bin/bash

# 执行单个命令
docker exec my-nginx nginx -t

# 以root用户身份进入容器
docker exec -it --user root my-nginx /bin/bash

查看容器日志:

代码语言: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

文件拷贝:

代码语言:bash
复制
# 从容器拷贝文件到宿主机
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

删除容器:

代码语言:bash
复制
# 删除停止的容器
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 网络管理

查看网络:

代码语言:bash
复制
# 列出所有网络
docker network ls

# 查看网络详细信息
docker network inspect bridge

创建网络:

代码语言:bash
复制
# 创建桥接网络
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

网络连接管理:

代码语言:bash
复制
# 将容器连接到网络
docker network connect my-network my-container

# 断开容器网络连接
docker network disconnect my-network my-container

# 创建容器时指定网络
docker run -d --network my-network --name web nginx

查看端口映射:

代码语言:bash
复制
# 查看容器端口映射
docker port my-nginx

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

4.2 数据卷管理

查看数据卷:

代码语言:bash
复制
# 列出所有数据卷
docker volume ls

# 查看数据卷详细信息
docker volume inspect my-volume

创建数据卷:

代码语言:bash
复制
# 创建命名数据卷
docker volume create my-volume

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

使用数据卷:

代码语言:bash
复制
# 挂载命名数据卷
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

删除数据卷:

代码语言:bash
复制
# 删除指定数据卷
docker volume rm my-volume

# 删除所有未使用的数据卷
docker volume prune

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

5.1 系统状态监控

查看Docker系统信息:

代码语言:bash
复制
# 查看Docker详细信息
docker info

# 查看Docker版本信息
docker version

# 检查Docker系统状态
docker system info

实时监控容器资源:

代码语言:bash
复制
# 查看所有容器的资源使用情况
docker stats

# 查看指定容器的资源使用
docker stats my-nginx

# 只显示一次统计信息
docker stats --no-stream

# 自定义显示格式
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"

查看磁盘使用情况:

代码语言:bash
复制
# 查看Docker磁盘使用情况
docker system df

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

5.2 系统清理与维护

系统清理:

代码语言:bash
复制
# 清理系统(删除所有未使用的资源)
docker system prune

# 强制清理(包括未使用的镜像)
docker system prune -a

# 清理指定时间前的资源
docker system prune --filter "until=24h"

分类清理:

代码语言:bash
复制
# 清理停止的容器
docker container prune

# 清理悬空镜像
docker image prune

# 清理所有未使用的镜像
docker image prune -a

# 清理未使用的数据卷
docker volume prune

# 清理未使用的网络
docker network prune

六、实战场景应用案例

6.1 Web应用部署场景

部署Nginx服务器:

代码语言:bash
复制
# 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

多容器应用编排示例:

代码语言:bash
复制
# 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 开发环境搭建场景

快速搭建开发数据库:

代码语言:bash
复制
# 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

开发工具容器化:

代码语言:bash
复制
# 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 命令组合使用技巧

管道操作示例:

代码语言:bash
复制
# 查找并删除特定镜像
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"

批量操作技巧:

代码语言:bash
复制
# 批量拉取镜像
images=("nginx:latest" "mysql:8.0" "redis:alpine")
for image in "${images[@]}"; do
    docker pull "$image"
done

# 批量删除特定标签的镜像
docker images | grep "^<none>" | awk '{print $3}' | xargs docker rmi

# 批量导出镜像
for image in $(docker images --format "{{.Repository}}:{{.Tag}}"); do
    docker save "$image" -o "${image//\//_}.tar"
done

条件过滤与格式化:

代码语言:bash
复制
# 查看占用内存最多的容器
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 提升效率的最佳实践

设置别名和快捷命令:

代码语言:bash
复制
# 在 ~/.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)'

脚本自动化管理:

代码语言:bash
复制
#!/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

常见问题排查命令:

代码语言:bash
复制
# 检查容器健康状态
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来管理多容器应用:

代码语言:yaml
复制
version: '3.8'
services:
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: secret

Kubernetes命令对比:

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

  • docker runkubectl run
  • docker pskubectl get pods
  • docker logskubectl logs

容器最佳实践参考:

  1. 安全性:使用非root用户运行容器
  2. 资源限制:设置内存和CPU限制
  3. 健康检查:配置容器健康检查
  4. 日志管理:合理配置日志驱动和轮转
  5. 镜像优化:使用多阶段构建减小镜像体积

持续学习资源:

  • Docker官方文档
  • 容器技术社区博客
  • 实际项目实践
  • 云原生技术栈学习

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Docker命令基础概念
    • 1.1 Docker命令结构解析
    • 1.2 Docker命令分类概览
  • 二、镜像管理核心命令
    • 2.1 镜像获取与查看
    • 2.2 镜像构建与管理
  • 三、容器生命周期管理命令
    • 3.1 容器创建与启动
    • 3.2 容器状态管理
    • 3.3 容器操作与维护
  • 四、网络与存储管理命令
    • 4.1 网络管理
    • 4.2 数据卷管理
  • 五、系统监控与信息查看命令
    • 5.1 系统状态监控
    • 5.2 系统清理与维护
  • 六、实战场景应用案例
    • 6.1 Web应用部署场景
    • 6.2 开发环境搭建场景
  • 七、命令组合与高效技巧
    • 7.1 命令组合使用技巧
    • 7.2 提升效率的最佳实践
  • 八、总结与进阶建议
    • 8.1 命令学习路径总结
    • 8.2 持续学习建议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档