【问题标题】:Docker stdin read unix @->/var/run/docker.sock: read: connection reset by peerDocker stdin 读取 unix @->/var/run/docker.sock: 读取: 对等连接重置
【发布时间】:2019-07-11 08:37:52
【问题描述】:

写入 docker stdin 会产生错误。

$ head -c 500000 /dev/zero | docker run --rm -i alpine:3.9 echo

read unix @->/var/run/docker.sock: read: connection reset by peer
$ echo $?
1

有没有办法解决这个问题?

【问题讨论】:

  • 如果我正确地得到了你想要达到的目标(使 cotainerized 过程重复传递给dockerstdin 的内容),你不应该使用 echo (读取arguments)但cat(默认读取stdin):echo 123 | docker run --rm -i alpine cat 打印123,但与echo 相同的命令不打印任何内容。
  • 有人提交了错误报告,github.com/docker/cli/issues/1456 我可以使用 Docker-CE 19.03.5 重现错误。 (这似乎与我对 Docker 守护程序不时停止响应 unix 套接字的其他担忧不同)。

标签: docker stdin


【解决方案1】:

对于这个特定的实例,看起来这个错误是因为echo 在读取任何标准输入之前退出(为什么会这样?)。这会导致套接字在传输过程中关闭。

这是一个误导性的错误消息/状态,但在这种情况下确实有意义。小于套接字缓冲区的有效负载可能会导致竞争条件,并且只会间歇性地失败,而不是像这种情况下总是失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-31
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多