繁体   English   中英

无法通过Python将命令发送到Docker Unix套接字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM