Docker常用命令总结

145 阅读4分钟

@[toc]

以下为 Docker 运维中最核心的 20 个高频命令,涵盖容器管理、镜像操作、网络配置等核心场景,附实战示例与参数解析,助你高效驾驭容器化环境:


📦 一、容器生命周期管理

  1. docker run
    创建并启动容器,最常用命令:

    docker run -d --name web -p 8080:80 -v /data:/app nginx:1.25
    
    • -d:后台运行
    • -p 宿主机端口:容器端口:端口映射
    • -v 宿主机路径:容器路径:数据卷挂载
  2. docker ps
    查看容器状态:

    docker ps -a  # 列出所有容器(含已停止)
    docker ps -q  # 仅输出容器ID(用于脚本处理)
    
  3. docker start/stop/restart
    启停控制:

    docker stop web  # 优雅停止(SIGTERM)
    docker start web  # 启动已停止的容器
    docker restart web  # 重启容器 
    
  4. docker exec
    进入运行中容器:

    docker exec -it web /bin/bash  # 启动交互式终端
    

    ⚠️ 与 attach 区别:exec 创建新会话,退出不影响容器

  5. docker rm
    删除容器:

    docker rm -f web  # 强制删除运行中容器(慎用)
    docker container prune  # 清理所有停止的容器 
    

🏗️ 二、镜像管理

  1. docker pull
    拉取镜像:

    docker pull ubuntu:22.04  # 显式指定版本(避免 latest)
    
  2. docker images
    查看本地镜像:

    docker images --filter "dangling=false"  # 过滤悬空镜像 
    
  3. docker rmi
    删除镜像:

    docker rmi alpine:3.17  # 删除指定版本
    docker image prune  # 清理悬空镜像 
    
  4. docker build
    构建自定义镜像:

    docker build -t myapp:v1 --build-arg ENV=prod .
    
    • .:Dockerfile 上下文路径
  5. docker push
    推送镜像到仓库:

    docker push my-registry.com/app:v1
    

🌐 三、网络与存储

  1. docker network create
    创建自定义网络:

    docker network create --driver bridge app_net  # 指定驱动类型 
    
  2. docker network connect
    将容器加入网络:

    docker network connect app_net web
    
  3. docker volume create
    创建持久化数据卷:

    docker volume create db_data  # 命名卷(优于匿名卷)
    
  4. docker cp
    主机与容器间复制文件:

    docker cp web:/etc/nginx/nginx.conf ./  # 容器 → 主机
    docker cp ./config.ini web:/app/  # 主机 → 容器 
    

🔍 四、运维与监控

  1. docker logs
    查看容器日志:

    docker logs -f --tail 100 web  # 实时追踪尾部100行 
    
  2. docker inspect
    查看容器/镜像元数据:

    docker inspect web | jq .NetworkSettings.IPAddress  # 提取容器IP 
    
  3. docker stats
    实时监控资源使用:

    docker stats web mysql  # 监控指定容器(CPU/内存/网络)
    
  4. docker update
    动态调整容器配置:

    docker update --memory 1g --cpus 2 web  # 调整内存和CPU限制 
    

🧹 五、系统维护

  1. docker system prune
    清理未使用资源:

    docker system prune -af --volumes  # 强制清理容器/镜像/网络/卷 
    
  2. docker compose up
    编排多容器应用(必学!):

    docker compose -f stack.yml up -d  # 后台启动服务栈 
    

💻 实战示例:部署 MySQL 服务

# 创建持久化卷
docker volume create mysql_data

# 启动容器(网络+资源限制+数据持久化)
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -v mysql_data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=secret \
  --network app_net \
  --memory 2g --cpus 1 \
  mysql:8.0

关键步骤

  • 通过 -v 挂载卷保障数据安全
  • --network 实现容器间安全通信
  • --memory--cpus 避免资源超用

📝 命令速查表(20 大核心命令)

类别命令核心作用
容器管理docker run创建并启动容器
docker ps查看容器状态
docker exec进入运行中容器调试
docker logs查看容器日志输出
镜像操作docker pull拉取远程镜像
docker build构建自定义镜像
docker push推送镜像到仓库
网络配置docker network create创建容器网络
docker network connect容器加入指定网络
数据持久化docker volume create创建持久化存储卷
docker cp容器与主机间复制文件
运维监控docker stats实时监控资源使用
docker inspect查看容器/镜像元数据
系统维护docker system prune清理未使用资源
docker compose up一键部署多容器应用

💎 最佳实践建议

  1. 版本固化:禁止使用 latest 标签,明确指定镜像版本(如 nginx:1.25.3
  2. 资源限制:所有容器必须通过 --memory--cpus 限制资源
  3. 非 root 运行:使用 --user 1000:1000 避免特权操作
  4. 日志管理:日志输出到 stdout/stderr,配合 --log-opt max-size=10m 防止磁盘撑爆

掌握这 20 个命令可解决 90% 的日常容器操作。进阶学习推荐:

  • 多阶段构建(减少镜像体积)
  • Swarm/K8s 集群编排
  • 容器安全加固(AppArmor/SELinux)

更多技术干货欢迎关注微信公众号“风雨同舟的AI笔记”~

【转载须知】:转载请注明原文出处及作者信息