Docker 使用 OpenSSL 和标准输入、标准输出执行
Docker Exec with OpenSSL and stdin, stdout
我正在尝试将 docker exec 与 OpenSSL 和管道一起使用,就像这样。我有一个名为 test1 的 运行ning 容器。
1. openssl genrsa -des3 -passout pass:123 2048 | docker exec -i test1 sh -c 'cat >/key.pem
2. docker exec test1 cat key.pem
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,DE60A9F33B9E508D
/uJYBfM6YwCkIgrgQSH......
3. docker exec test1 cat key.pem | openssl req -subj '/CN=client' -new -key -out client.csr -passin pass:123
write /dev/stdout: broken pipe
如果我 运行 这些命令没有使用 docker 它们工作正常。 Is/does docker 对 stdin 和 stdout 流有什么不同吗?
你应该可以通过做两件事来解决这个问题:
- 按照上面的建议对输出行进行缓冲,这意味着 docker 命令变为
docker exec -t test1 cat key.pem
- 你现在 运行 的方式,并不清楚 docker exec 参数在哪里结束以及通过
|
的重定向从哪里开始。只需将整个命令更改为使 bash 清楚的命令,这应该可以工作
docker exec -t test1 cat key.pem | openssl req -subj '/CN=client' -new -key /dev/stdin -passin pass:123
我正在尝试将 docker exec 与 OpenSSL 和管道一起使用,就像这样。我有一个名为 test1 的 运行ning 容器。
1. openssl genrsa -des3 -passout pass:123 2048 | docker exec -i test1 sh -c 'cat >/key.pem
2. docker exec test1 cat key.pem
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,DE60A9F33B9E508D
/uJYBfM6YwCkIgrgQSH......
3. docker exec test1 cat key.pem | openssl req -subj '/CN=client' -new -key -out client.csr -passin pass:123
write /dev/stdout: broken pipe
如果我 运行 这些命令没有使用 docker 它们工作正常。 Is/does docker 对 stdin 和 stdout 流有什么不同吗?
你应该可以通过做两件事来解决这个问题:
- 按照上面的建议对输出行进行缓冲,这意味着 docker 命令变为
docker exec -t test1 cat key.pem
- 你现在 运行 的方式,并不清楚 docker exec 参数在哪里结束以及通过
|
的重定向从哪里开始。只需将整个命令更改为使 bash 清楚的命令,这应该可以工作
docker exec -t test1 cat key.pem | openssl req -subj '/CN=client' -new -key /dev/stdin -passin pass:123