AMAZINGINDEX.COM 每日 AI 简报
49.8
VOL. 2026.06
2026.06.17
← 返回 2026.06.17 日报
日报快照 · Daily Snapshot
NO. 014

无curl容器内用Bash直接发HTTP请求

#ARTICLE HackerNews 2026.06.17
推荐指数 45.0 NO. 014 · 2026.06.17
发布2026/06/16Score156Comments86

Bash内置的/dev/tcp/host/port语法可打开TCP套接字,手动写入HTTP请求即可替代curl/wget。对精简容器镜像和应急调试场景极其实用,避免为一次健康检查额外安装工具。

这个技巧的真正价值不在Bash语法本身,而在于它揭示了容器镜像分层策略的一个盲区:很多人为了单次调试往生产镜像里塞curl,结果镜像膨胀几十MB且引入CVE面。更务实的做法是把这类能力下沉到sidecar或init容器,或者直接用distroless + 外部探针。

如果你还在Alpine之外额外装curl/net-tools,建议审计一下Dockerfile,这条命令能帮你砍掉不少不必要的层。另外注意/dev/tcp是Bash特性,sh/dash不支持,写脚本时别踩这个兼容性坑。

意见分歧 67 条评论

核心争论:应急调试时Bash原生TCP够用,还是应坚持装curl等专用工具

mrshu

I ran into this while checking connectivity between containers on an internal Docker network where the image had neither curl nor wget. The main surprise was that Bash has &#x2F;dev&#x2F;tcp which lets you do the equivalent of an HTTP request with a bit of shell magic, for instance: exec 3<>&#x2F;

sevenzero

It seems pretty cool, but I am wondering if there's any drawback on just using images that support curl? I can't think of any and to me it's kinda a must have, even on production images

mrshu

That is indeed a solid pushback! :) For what its worth, this container used `python:3.12.2-slim-bookworm` and I really would not expect that sort of an image to bundle `curl` -- even if it is intended for production.

替代方案: curlwgetncsocatPython urllibPython socketsockets libdebug containersalpineMUSL
查看原文 →