[英]Cannot send commands to Docker unix socket via Python
我有一个脚本,使用nc
(特别是支持Unix域套接字-U
的openbsd版本)将信号发送到容器:
echo -e "POST /containers/$HAPROXY_CONTAINER/kill?signal=HUP HTTP/1.0\r\n" | \
nc -U /var/run/docker.sock
我想看看是否可以避免openbsd nc
依赖项或socat
依赖项,因此我尝试在Python 3中执行以下操作:
import socket
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.connect('/var/run/docker.sock')
sock.sendall(str.encode('POST /containers/{}/kill?signal=HUP HTTP/1.0\r\n'.format(environ['HAPROXY_CONTAINER'])))
我没有从Python版本中引发任何错误,但是我的容器没有收到我尝试发送的信号。
在bash版本中, echo
提供了另外一行。 HTTP在标头之后需要两行,因此Python sendall
需要第二个\\n
如下所示:
sock.sendall(str.encode('POST /containers/{}/kill?signal=HUP HTTP/1.0\r\n\n'.format(environ['HAPROXY_CONTAINER'])))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.