Docker容器操作完全指南:run/exec/ps/stop/rm 五大命令精讲

一、前言

要使用Docker,学会Docker常用的命令是我们必须掌握的知识,这里带大家了解Docker的run/exec/ps/stop/rm 五大命令精讲


二、核心命令深度解析

2.1 docker run - 容器生命起点

关键参数解析:
# 基础启动
docker run -d --name web -p 8080:80 nginx:alpine

# 高级配置
docker run -it --rm \
  -v /host/data:/container/data:ro \
  --memory="512m" --cpus="1.5" \
  --env MYSQL_ROOT_PASSWORD=secret \
  mysql:8.0
参数作用描述使用频率
-d后台运行(detach模式)★★★★★
--name指定容器名称(唯一标识)★★★★★
-p端口映射(主机:容器)★★★★★
-v卷挂载(主机路径:容器路径)★★★★★
--rm退出后自动删除容器★★★★☆
-e/--env设置环境变量★★★★☆
--network指定容器网络★★★☆☆
经典场景:

场景1:调试模式启动

docker run -it --entrypoint=/bin/sh node:18
# 进入容器后手动启动应用

场景2:资源限额运行

docker run -d --name redis-limited \
  --memory="1g" --memory-swap="2g" \
  --cpus="2" --blkio-weight="500" \
  redis:7

2.2 docker exec - 进入运行中容器

操作模式对比:
模式命令示例适用场景
交互式shelldocker exec -it web sh调试/配置变更
单次命令执行docker exec web nginx -t检查配置有效性
特权模式docker exec --privileged调试内核级问题
用户权限控制:
# 以root身份执行
docker exec -u 0 web whoami  # 输出:root

# 以普通用户执行
docker exec -u 1000 web whoami  # 输出:UID 1000用户

2.3 docker ps - 容器状态监控

输出格式化:
# 自定义列显示
docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"

# JSON格式输出
docker ps -a --format '{{json .}}' | jq
过滤技巧:
# 按名称过滤
docker ps -f "name=web"

# 按状态过滤
docker ps -f "status=exited"

# 按标签过滤
docker ps -f "label=environment=prod"

2.4 docker stop - 优雅终止容器

停止过程解析:
  1. 发送SIGTERM信号 → 等待默认10秒
  2. 若进程未退出 → 发送SIGKILL强制终止
超时调整:
docker stop -t 30 web  # 给予30秒清理时间
批量操作:
# 停止所有运行中的容器
docker stop $(docker ps -q)

2.5 docker rm - 容器清理艺术

删除策略:
# 安全删除(需先停止)
docker rm web

# 强制删除运行中容器
docker rm -f web

# 清理所有已停止容器
docker container prune
数据保全技巧:
# 删除前备份数据卷
docker run --volumes-from web -v $(pwd):/backup busybox \
  tar czvf /backup/web_data.tar.gz /path/to/data

三、命令组合实战

3.1 全生命周期操作示例

# 1. 启动容器
docker run -d --name demo -p 3000:3000 node-app:v1

# 2. 查看状态
docker ps -f "name=demo"

# 3. 进入容器调试
docker exec -it demo bash

# 4. 停止容器
docker stop demo

# 5. 删除容器
docker rm demo

3.2 生产环境问题诊断流程

# 查看容器日志
docker logs --tail 100 -f app

# 进入容器检查进程
docker exec app ps aux

# 检查网络连接
docker exec app netstat -tulpn

# 导出核心转储
docker exec app gcore -o /tmp/core.dump <PID>

四、高阶操作技巧

4.1 容器热更新

# 1. 启动新版本容器
docker run -d --name app-v2 --network=app-net app:v2

# 2. 切换流量(通过服务发现或负载均衡器)
curl -X POST http://gateway/switch?version=v2

# 3. 保留旧版本以便回滚
docker stop app-v1 && docker rm app-v1

4.2 容器检查点

# 创建检查点
docker checkpoint create web checkpoint-202405

# 从检查点恢复
docker start --checkpoint checkpoint-202405 web

五、常见问题排障指南

5.1 容器启动失败

症状docker run后立即退出
排查步骤

  1. 查看日志:docker logs <container-id>
  2. 检查退出码:docker inspect --format='{{.State.ExitCode}}' <container-id>
  3. 交互式调试:docker run -it --entrypoint=/bin/sh <image>

5.2 端口冲突处理

解决方案

# 查找占用端口的进程
sudo lsof -i :8080

# 或者直接停止冲突容器
docker stop $(docker ps -qf "publish=8080")

附:命令速查手册

操作目标命令模板关键参数说明
启动MySQL容器docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=pass -v /data/mysql:/var/lib/mysql mysql:8-e设置环境变量,-v挂载数据卷
调试Python应用docker exec -it pyapp python debug.py-it进入交互模式
批量清理容器docker rm -f $(docker ps -aq)-f强制删除,-a查询所有容器
查看实时资源消耗docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"自定义监控指标

最佳实践:始终为容器命名(–name),使用–rm避免僵尸容器,生产环境务必设置资源限制(–memory, --cpus)!

评论 59
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值