我试图将docker exec与OpenSSL一起使用并像这样使用管道。我有一个名为test1的容器。
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的情况下运行这些命令,则可以正常工作。 / docker是否与stdin和stdout流做了什么不同?
答案 0 :(得分:2)
你应该能够通过做两件事来解决这个问题:
docker exec -t test1 cat key.pem
|
重定向的位置。只需将整体命令更改为能够清除bash的内容,这应该可以正常工作 docker exec -t test1 cat key.pem | openssl req -subj '/CN=client' -new -key /dev/stdin -passin pass:123