同事说, curl -v http://10.22.12.87:2376/version 返回 400, 问我怎么用 curl 访问 dockerd.
我的思路是先想办法通过 sdk 访问 version api, 然后 tcpdump 观察一下 url 就可以了, 所以:
pip install docker, python repl 里docker.from_env().version()tcpdump -i any port 2376却什么都看不到, 怀疑from_env()走的 unix socketlsof -p+ss -xp果然是在的 unix socket, 那我抓个 unix socket 的包吧socat TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock, 然后 python repl 里docker.DockerClient(base_url='tcp://localhost:2375').version()- 这次可以抓到包了, 一个简单的 GET HTTP, curl 却发现报错说没有证书
- 没证书会返回 400? 我自己手动试了一次
curl -v http://10.22.12.87:2376/version, 发现并没有 400, 而是直接说Client sent an HTTP request to an HTTPS server.