以下是 Docker 命令行工具的详细解析,涵盖常用命令、参数说明及实际应用场景,帮助您高效管理容器化应用:
一、镜像管理
镜像(Image)是容器的基础模板,通常存储在 Docker Hub 或私有仓库中。
命令 | 参数说明 | 示例 |
---|---|---|
docker pull <镜像名>:<标签> | --platform 指定平台架构(如 linux/amd64 ) | docker pull nginx:1.23 拉取 Nginx 1.23 镜像 |
docker images | -a 显示所有镜像(包括中间层) | docker images -q 仅显示镜像 ID |
docker rmi <镜像名/ID> | -f 强制删除(即使有容器依赖) | docker rmi $(docker images -q) 删除所有镜像 |
docker build -t <镜像名> . | -f 指定 Dockerfile 路径;--no-cache 禁用构建缓存 | docker build -t myapp:v1 . 根据当前目录 Dockerfile 构建镜像 |
docker save -o <文件> <镜像> | 导出镜像为 .tar 文件 | docker save -o nginx.tar nginx:1.23 |
docker load -i <文件> | 从 .tar 文件导入镜像 | docker load -i nginx.tar |
二、容器操作
容器(Container)是镜像的运行实例,支持生命周期管理、资源限制等。
命令 | 参数说明 | 示例 |
---|---|---|
docker run [选项] <镜像> | -d 后台运行;-p 主机端口:容器端口 端口映射;--name 命名容器 | docker run -d -p 80:80 --name web nginx |
docker ps | -a 显示所有容器(包括已停止的) | docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}" 自定义输出格式 |
docker start/stop/restart <容器> | 启动/停止/重启容器 | docker stop web 停止名为 web 的容器 |
docker rm <容器> | -f 强制删除运行中的容器;-v 同时删除关联卷 | docker rm -fv $(docker ps -aq) 删除所有容器及其数据卷 |
docker exec [选项] <容器> <命令> | -it 进入交互式终端(通常结合 /bin/bash ) | docker exec -it web bash 进入容器终端 |
docker logs <容器> | -f 实时跟踪日志;--tail N 显示最后 N 行 | docker logs -f --tail 100 web 实时查看最新 100 行日志 |
三、网络管理
Docker 提供多种网络模式(桥接、主机、无网络等),支持自定义网络。
命令 | 参数说明 | 示例 |
---|---|---|
docker network ls | 列出所有网络 | docker network ls |
docker network create <网络名> | --driver 指定驱动(如 bridge 、overlay ) | docker network create mynet 创建桥接网络 |
docker network connect <网络> <容器> | 将容器连接到指定网络 | docker network connect mynet web |
docker network inspect <网络> | 查看网络详细信息(包括连接的容器和 IP 分配) | docker network inspect mynet |
四、数据卷与存储
数据卷(Volume)用于持久化容器数据,避免容器删除后数据丢失。
命令 | 参数说明 | 示例 |
---|---|---|
docker volume create <卷名> | 创建数据卷 | docker volume create myvol |
docker volume ls | 列出所有数据卷 | docker volume ls |
docker run -v <主机路径>:<容器路径> | 挂载主机目录到容器(支持读写或只读 :ro ) | docker run -v /data:/app/data:ro nginx 挂载主机 /data 为容器只读目录 |
docker volume rm <卷名> | 删除数据卷 | docker volume rm myvol |
五、高级功能
1. 资源限制
限制容器使用的 CPU 和内存:
bash
复制
docker run -d --name app \
--cpus 1.5 \ # 限制使用 1.5 个 CPU 核心
--memory 512m \ # 限制内存为 512MB
--memory-swap 1g \ # 总内存(RAM + Swap)限制为 1GB
nginx
2. 容器健康检查
在 Dockerfile 或运行命令中定义健康检查策略:
docker run -d --name db \
--health-cmd "pg_isready -U postgres" \ # 检查 PostgreSQL 是否就绪
--health-interval 10s \ # 检查间隔
postgres:15
3. Docker Compose 集成
通过 docker-compose.yml
管理多容器应用:
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secret
六、安全与调试
1. 权限控制
- 禁用特权模式:
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx
- 只读文件系统:
docker run --read-only -v /app/tmp alpine
2. 容器调试工具
- 查看资源使用:
docker stats
- 检查容器元数据:
docker inspect <容器>
- 导出容器文件系统:
docker export <容器> > container.tar
七、常用快捷技巧
-
批量清理无用资源:
docker system prune -a -f # 删除所有未使用的镜像、容器、网络和数据卷
-
快速进入容器终端:
alias dex='docker exec -it $(docker ps -l -q) bash' # 进入最新创建的容器
-
查看容器 IP 地址:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器>
八、注意事项
- 慎用
-f
参数:强制删除操作可能导致数据丢失。 - **避免
--privileged
**:特权模式会赋予容器完全的主机访问权限。 - 镜像版本锁定:生产环境应明确指定镜像版本(如
nginx:1.23
),避免使用latest
。
总结
本文详细介绍了Docker命令行工具的使用方法,主要内容包括:
1)镜像管理(pull/rmi/build等命令);
2)容器操作(run/exec/logs等命令);
3)网络管理(网络连接与配置);
4)数据卷管理(持久化存储);
5)高级功能(资源限制、健康检查)。
文章还提供了安全配置建议、调试技巧和批量清理等快捷命令,并特别提醒要慎用特权模式、明确指定镜像版本等注意事项。全文通过参数说明和示例演示,帮助用户高效管理容器化应用。
参考: