Docker命令行的高级用法

Docker命令行的高级用法

1. 格式化输出 - 精确获取你需要的信息

不要再从一大堆输出中肉眼查找信息了,使用--format可以精确提取你需要的数据:

1
2
3
# 只获取所有容器的ID和名称docker ps --format "{{.ID}}: {{.Names}}"
# 以表格形式展示镜像信息docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Size}}"
# 提取容器IP地址docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name

支持Go模板语法,可以构建任意格式的输出,轻松集成到脚本中。


2. 过滤器 - 快速定位目标对象

面对几十上百个容器或镜像,如何快速找到你要的那个?使用--filter

1
2
3
4
# 查找所有退出的容器docker ps -a --filter "status=exited"
# 查找特定标签的镜像docker images --filter "label=environment=production"
# 查找悬空镜像(没有标签的镜像)docker images --filter "dangling=true"
# 组合多个过滤条件docker ps --filter "status=running" --filter "name=web"

支持多种过滤条件组合,比手动grep更高效准确。


3. 批量操作 - 一次处理多个对象

不要再一个个手动操作了,这些命令可以帮你批量处理:

1
2
3
4
# 停止所有运行中的容器docker stop $(docker ps -q)
# 删除所有已停止的容器docker container prune
# 删除所有未使用的镜像docker image prune -a
# 一键清理所有未使用的对象(包括网络、数据卷等)docker system prune -a

系统维护和清理变得轻松高效,一行命令搞定。


4. 上下文管理 - 无缝切换多环境

需要同时管理多个Docker环境?使用上下文功能:

1
2
3
4
# 创建新的上下文连接到远程Docker主机docker context create remote-server --docker "host=ssh://user@remote-server"
# 列出所有上下文docker context ls
# 切换上下文docker context use remote-server
# 在特定上下文中执行命令docker --context=remote-server ps

本地开发、测试环境、生产环境无缝切换,不需要修改环境变量。


5. 实时日志跟踪 - 监控容器状态

调试容器问题?使用这些日志技巧:

1
2
3
4
# 实时跟踪容器日志,显示时间戳docker logs -f --timestamps container_name
# 只查看最近30分钟的日志docker logs --since 30m container_name
# 只显示最后10行日志docker logs --tail 10 container_name
# 组合使用docker logs -f --since 5m --tail 20 container_name

精确定位问题发生时间,快速排查故障原因。


6. 容器统计信息 - 实时监控资源使用

想知道哪个容器吃掉了你的资源?使用stats命令:

1
2
3
4
# 查看所有容器资源使用情况docker stats
# 只监控特定容器docker stats container1 container2
# 以不同单位显示内存使用docker stats --format "{{.Name}}: {{.MemUsage}}"
# 一次性输出当前状态docker stats --no-stream

实时掌握CPU、内存、网络IO使用情况,及时发现性能瓶颈。


7. 镜像历史 - 分析镜像构成

想知道一个镜像是如何构建的?查看其历史:

1
2
3
# 查看镜像构建历史docker history image_name
# 显示完整命令(不截断)docker history --no-trunc image_name
# 以人类友好格式显示大小docker history --human image_name

了解每一层的大小和构建命令,找出膨胀原因。


8. 事件流 - 实时监控Docker活动

想知道Docker后台发生了什么?监听事件流:

1
2
3
4
# 实时查看所有Docker事件docker events
# 按事件类型过滤docker events --filter 'type=container'
# 按事件动作过滤docker events --filter 'event=start'
# 指定时间范围docker events --since '2023-01-01' --until '2023-01-02'

实时监控容器启停、镜像构建等活动,适合调试和审计。


9. 磁盘使用情况 - 找出空间占用

Docker占用太多磁盘空间?使用这个命令找出原因:

1
2
# 查看Docker磁盘使用详情docker system df
# 查看详细信息,包括每个镜像和容器docker system df -v

精确了解镜像、容器、数据卷占用情况,有针对性地清理。


10. 实验性功能 - 抢先体验新特性

想尝试最新功能?启用实验性特性:

1
2
# 查看当前可用的实验性功能docker version -f '{{.Server.Experimental}}'
# 在配置中启用实验性功能echo '{"experimental": true}' | sudo tee /etc/docker/daemon.jsonsudo systemctl restart docker