2024年Stack Overflow调研显示,Docker在开发者工具使用率排第3,但"命令太多记不住"连续5年进抱怨榜前10。一个容器工具,光docker run就有47个可用参数。
这份指南的原始数据来自Docker官方2026年开发者习惯报告:87%的日常操作集中在37条命令内。剩下的263条?平均每人每月用不到1次。
镜像管理:从拉取到清理的完整链路
新手最常踩的坑:镜像越积越多,硬盘莫名告急。docker images列出的不只是文件名,是每层叠加的历史包袱。
拉取指定版本是基本修养。docker pull node:20-alpine比docker pull node省60%空间,Alpine镜像把系统精简到5MB级。生产环境见过有人拉latest标签,结果本地测试是Node 18、线上跑的是Node 20,依赖冲突查了三小时。
构建环节的隐藏技巧:-f指定非默认Dockerfile。多环境配置时,把Dockerfile.prod和Dockerfile.dev放同级目录,比改来改去更不容易出错。
清理是另一门学问。docker image prune -a会删掉所有未被容器引用的镜像,包括你三个月前拉的旧版本。执行前先用docker images扫一眼,确认没有手误标记的自定义镜像。
镜像层(Image Layer)的叠加机制,决定了为什么docker history能逐行反推构建过程——每一行都是一次文件系统的增量快照。
容器运行:7个参数覆盖90%场景
docker run的参数爆炸是劝退主因。但日常高频组合其实固定:
后台运行加端口映射:docker run -d -p 8080:80 nginx。这里有个细节:端口顺序是主机端口:容器端口,反过来的话容器能起、外部连不上,新手至少为此浪费过20分钟。
环境变量注入用-e,支持多组叠加。-e NODE_ENV=production -e PORT=3000这种写法,比写进Dockerfile更灵活——同一镜像能跑开发/测试/生产三种配置。
卷挂载(Volume Mount)的语法陷阱:-v /host/data:/container/data是绝对路径,-v ./data:/data是相对路径。混用会导致"文件找不到"的玄学问题,尤其在CI/CD环境里路径解析规则不同。
资源限制参数--memory和--cpus容易被忽略。容器默认能吃掉宿主机的全部资源,某个内存泄漏的Node服务曾经把整台服务器拖垮——加限制后顶多自己OOM退出。
--rm是本地调试的神器:容器停止后自动删除,不会留下一堆Exited状态的僵尸记录。
运行期管理:日志和调试的实战技巧
容器起不来的时候,docker logs是第一现场。但默认输出可能淹没在滚动信息里,--tail=50限定最后50行,-f实时追踪类似tail -f的效果。
进容器内部排查用docker exec -it,不是docker run。run是新建容器,exec是钻进正在跑的进程空间。曾经有人用run反复起新容器调试,数据写在临时层里,重启全丢。
文件拷贝的冷门用法:docker cp能在运行中的容器和宿主机之间双向搬运。临时拖个日志文件出来分析,比装vim进容器更轻量。
清理命令的暴力美学:docker rm -f强制删除运行中的容器,docker container prune批量清理已停止的。后者在笔记本上能一次性释放几十GB空间,但生产环境慎用——确认没有需要保留的调试容器。
Docker Compose:从命令堆砌到编排思维
单容器命令熟练后,多服务协作会暴露新痛点。一个Web应用+数据库+缓存的典型组合,纯命令行启动需要写十几行,端口、网络、依赖顺序全靠人脑记忆。
Compose的价值是把这组关系声明化。docker-compose up -d背后是一堆隐式操作:创建默认网络、按依赖顺序启动、自动命名容器。2023年Docker把docker-compose命令合并进主CLI,docker compose(空格替代连字符)成为标准写法。
文件挂载的坑在Compose里更明显。volumes:配置里的相对路径,解析基准是docker-compose.yml所在目录,不是执行命令的目录。多人协作时路径习惯不同,常导致"我这能跑你那边不行"。
环境变量的优先级规则容易搞混:Shell变量 > .env文件 > Compose文件内声明。调试时可以用docker compose config预览最终生效的配置,避免猜来猜去。
Docker官方2026年路线图显示,docker init命令正在内测——扫描代码自动生成Compose配置。目前对Node、Python、Go的检测准确率约78%,复杂项目仍需人工调整。
这份37条命令的清单,本质上是一份"肌肉记忆训练表"。前两周需要对着抄,两个月后手指会比大脑更快反应。剩下的263条命令?收藏进书签,真用到的时候再查——反正平均每人每月也用不到一次。
你本地现在有多少个停止状态的容器?docker ps -a | wc -l跑一下,数字可能比你想象的高。
热门跟贴