Docker实践(4) – 使用socat查看Docker API流量详情

docker命令可能会偶尔地无法正常工作。大多数情况下是命令行参数没有输入正确,不过也有偶尔一些是严重的配置问题,如Docker二进制文件过期了。为了诊断此问题,查看你正在连接的docker daemon的数据流可能会有所帮助。

问题

你想用docker命令来调度一个问题。

方法

使用流量探测器来检查API调用并输出调用详情。

讨论

在此技术中你将在你的请求与服务器socket之间安放一个Unix域套接字代理来查看传过来了什么东西。现在需要root或sudo权限来做这件事。
要创建这个代理,需要用到socat命令。

socat是一个允许你在几乎任何类型的两个数据通道之间中继数据。

  1. $ sudo socat -v UNIX-LISTEN:/tmp/dockerapi.sock \
  2.           UNIX-CONNECT:/var/run/docker.sock &


在这个命令中-v参数输出数据流的可读格式。UNIX-LISTEN让socat监听一个域套接字,UNIX-CONNECT让socat连接到Docker的域套接字。’&’使命令后台运行。
你的请求到docker的路由可以看下面。
所有的流量都将被socat看到并记录到你的终端。

一个简单的docker命令输出类似如下:

socat不仅仅是用来调试docker,也可以用来调试任何的网络服务。

标签:Docker 发布于:2019-11-21 00:17:37