Docker 容器管理指南 🐳

Docker Commands


📋 目录导航


🔍 容器查看命令

1. 👀 查看运行中的容器 ID 和名称

1
docker ps --format '{{.ID}}: {{.Names}}'

运行中容器示例

2. 📦 查看已停止的容器 ID 和名称

1
docker ps -a --filter "status=exited" --format "{{.ID}} {{.Names}}"

已停止容器示例

3. 📊 查看所有容器(简洁格式)

1
docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"

4. 🔍 查看容器详细信息

1
2
3
4
5
# 查看特定容器信息
docker inspect mytest

# 查看容器资源使用情况
docker stats mytest

⚡ 容器生命周期管理

1. ⏹️ 停止容器

1
2
3
4
5
# 停止指定容器
docker stop mytest

# 优雅停止(给予一定时间完成处理)
docker stop -t 30 mytest

2. ▶️ 启动/重启容器

1
2
3
4
5
6
7
8
# 启动已停止的容器
docker start mytest

# 重启容器
docker restart mytest

# 强制重启容器
docker restart -t 0 mytest

3. ⏸️ 暂停/恢复容器

1
2
3
4
5
# 暂停容器运行
docker pause mytest

# 恢复暂停的容器
docker unpause mytest

📋 容器日志与诊断

1. 📝 查看容器日志

1
2
3
4
5
6
7
8
9
10
11
# 查看最新日志
docker logs mytest

# 实时跟踪日志输出
docker logs -f mytest

# 查看最后N行日志
docker logs --tail 100 mytest

# 查看带时间戳的日志
docker logs -t mytest

2. 🔍 进入容器内部

1
2
3
4
5
6
7
8
# 使用 bash 进入容器
docker exec -it mytest bash

# 使用 sh 进入容器
docker exec -it mytest sh

# 在容器中执行单条命令
docker exec mytest ls -la /app

进入容器演示

💡 提示:使用 Ctrl+D 或输入 exit 退出容器


🧹 批量容器管理

1. ⏹️ 停止所有运行中的容器

1
docker stop $(docker ps -q)

2. 🗑️ 删除所有已停止的容器

1
2
3
4
5
# 安全删除(需要确认)
docker container prune

# 强制删除(无需确认)
docker container prune -f

3. 🔧 删除特定容器

1
2
3
4
5
6
7
8
# 删除已停止的容器
docker rm mytest

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

# 删除容器并同时删除关联的匿名卷
docker rm -v mytest

4. 🧽 清理所有无用资源

1
2
3
4
5
# 删除所有停止的容器、未使用的网络、悬空镜像
docker system prune

# 包括未使用的卷
docker system prune --volumes

🚀 高级容器操作

1. 📊 容器资源限制

1
2
3
4
5
6
7
8
# 查看容器资源使用
docker stats

# 限制容器内存使用
docker run -d --name myapp --memory=512m nginx

# 限制CPU使用
docker run -d --name myapp --cpus=1.5 nginx

2. 🌐 容器网络管理

1
2
3
4
5
6
7
8
# 查看容器网络信息
docker network ls

# 查看容器端口映射
docker port mytest

# 创建自定义网络
docker network create my-network

3. 📁 容器文件操作

1
2
3
4
5
# 从容器复制文件到主机
docker cp mytest:/app/config.conf ./local-config.conf

# 从主机复制文件到容器
docker cp ./local-file.txt mytest:/app/file.txt

🛠️ 实用技巧和最佳实践

1. ❤️ 容器健康检查

1
2
3
4
5
6
7
8
# 查看容器健康状态
docker inspect --format='{{json .State.Health}}' mytest

# 运行带有健康检查的容器
docker run -d --name healthy-app \
--health-cmd="curl -f http://localhost || exit 1" \
--health-interval=30s \
nginx

2. 📈 容器资源监控

1
2
3
4
5
# 实时监控容器资源
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"

# 查看容器详细信息
docker inspect mytest | grep -E '(IPAddress|MacAddress|Gateway)'

3. 💾 容器备份与迁移

1
2
3
4
5
6
7
8
# 将容器提交为镜像
docker commit mytest my-backup-image

# 导出容器文件系统
docker export mytest > mytest-container.tar

# 导入容器文件系统
docker import mytest-container.tar my-imported-image

⚠️ 安全注意事项

  1. 🛡️ 谨慎使用特权容器

    1
    2
    # 避免不必要的特权模式
    # docker run --privileged myapp # 谨慎使用!
  2. 🔐 限制容器权限

    1
    2
    # 使用非root用户运行容器
    docker run -d --user 1000:1000 myapp
  3. 🔄 定期更新容器镜像

    1
    2
    3
    4
    # 拉取最新镜像并重建容器
    docker pull nginx:latest
    docker stop myapp && docker rm myapp
    docker run -d --name myapp nginx:latest

💡 常用命令组合

🔄 快速重启容器

1
docker restart mytest && docker logs -f mytest

📦 批量操作多个容器

1
2
# 批量启动匹配名称的容器
docker ps -a --filter "name=app" --format "{{.Names}}" | xargs -I {} docker start {}

📊 容器状态监控脚本

1
2
3
#!/bin/bash
# 监控容器状态
watch -n 5 'docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'

通过掌握这些 Docker 容器管理命令,您将能够更高效地管理和维护容器化应用!🐳🚀