@[toc]
以下为 Docker 运维中最核心的 20 个高频命令,涵盖容器管理、镜像操作、网络配置等核心场景,附实战示例与参数解析,助你高效驾驭容器化环境:
📦 一、容器生命周期管理
-
docker run
创建并启动容器,最常用命令:docker run -d --name web -p 8080:80 -v /data:/app nginx:1.25-d:后台运行-p 宿主机端口:容器端口:端口映射-v 宿主机路径:容器路径:数据卷挂载
-
docker ps
查看容器状态:docker ps -a # 列出所有容器(含已停止) docker ps -q # 仅输出容器ID(用于脚本处理) -
docker start/stop/restart
启停控制:docker stop web # 优雅停止(SIGTERM) docker start web # 启动已停止的容器 docker restart web # 重启容器 -
docker exec
进入运行中容器:docker exec -it web /bin/bash # 启动交互式终端⚠️ 与
attach区别:exec创建新会话,退出不影响容器 -
docker rm
删除容器:docker rm -f web # 强制删除运行中容器(慎用) docker container prune # 清理所有停止的容器
🏗️ 二、镜像管理
-
docker pull
拉取镜像:docker pull ubuntu:22.04 # 显式指定版本(避免 latest) -
docker images
查看本地镜像:docker images --filter "dangling=false" # 过滤悬空镜像 -
docker rmi
删除镜像:docker rmi alpine:3.17 # 删除指定版本 docker image prune # 清理悬空镜像 -
docker build
构建自定义镜像:docker build -t myapp:v1 --build-arg ENV=prod ..:Dockerfile 上下文路径
-
docker push
推送镜像到仓库:docker push my-registry.com/app:v1
🌐 三、网络与存储
-
docker network create
创建自定义网络:docker network create --driver bridge app_net # 指定驱动类型 -
docker network connect
将容器加入网络:docker network connect app_net web -
docker volume create
创建持久化数据卷:docker volume create db_data # 命名卷(优于匿名卷) -
docker cp
主机与容器间复制文件:docker cp web:/etc/nginx/nginx.conf ./ # 容器 → 主机 docker cp ./config.ini web:/app/ # 主机 → 容器
🔍 四、运维与监控
-
docker logs
查看容器日志:docker logs -f --tail 100 web # 实时追踪尾部100行 -
docker inspect
查看容器/镜像元数据:docker inspect web | jq .NetworkSettings.IPAddress # 提取容器IP -
docker stats
实时监控资源使用:docker stats web mysql # 监控指定容器(CPU/内存/网络) -
docker update
动态调整容器配置:docker update --memory 1g --cpus 2 web # 调整内存和CPU限制
🧹 五、系统维护
-
docker system prune
清理未使用资源:docker system prune -af --volumes # 强制清理容器/镜像/网络/卷 -
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 | 一键部署多容器应用 |
💎 最佳实践建议
- 版本固化:禁止使用
latest标签,明确指定镜像版本(如nginx:1.25.3) - 资源限制:所有容器必须通过
--memory和--cpus限制资源 - 非 root 运行:使用
--user 1000:1000避免特权操作 - 日志管理:日志输出到
stdout/stderr,配合--log-opt max-size=10m防止磁盘撑爆
掌握这 20 个命令可解决 90% 的日常容器操作。进阶学习推荐:
- 多阶段构建(减少镜像体积)
- Swarm/K8s 集群编排
- 容器安全加固(AppArmor/SELinux)
更多技术干货欢迎关注微信公众号“风雨同舟的AI笔记”~
【转载须知】:转载请注明原文出处及作者信息