Что не так с / dev / stdin в контейнере Docker Ubuntu с использованием -v? - PullRequest
0 голосов
/ 12 января 2019

У меня есть следующий Dockerfile в Mac OS X. Затем я создал образ Docker.

$ cat Dockerfile 
FROM ubuntu
$ docker build -t ubtsrv1 .
$ docker image ls -a |grep ubtsrv1
ubtsrv1             latest              1d9c17228a9e        2 weeks ago         86.7MB

Если я запускаю контейнер, подобный следующему, main.sh работает правильно.

$ docker run -it --rm 1d9c17228a9e
root@868b92725d0a:/# cat > main.sh <<'EOF'
> #!/bin/bash
> # vim: set noexpandtab tabstop=2:
> 
> x=$(< /dev/stdin)
> echo "$x"
> EOF
root@868b92725d0a:/# chmod +x main.sh 
root@868b92725d0a:/# ./main.sh <<EOF
> a
> b
> EOF
a
b

Если я запускаю контейнер, как показано ниже, я получаю сообщение об ошибке при запуске main.sh. Кто-нибудь знает, что не так? Спасибо.

$ docker run -it --rm -v /tmp:/tmp 1d9c17228a9e
root@c5ee57db53e6:/# cd /tmp/
root@c5ee57db53e6:/tmp# ./main.sh <<EOF
> a
> b
> EOF
./main.sh: line 4: /dev/stdin: No such file or directory
root@c5ee57db53e6:/tmp# cat main.sh 
#!/bin/bash
# vim: set noexpandtab tabstop=2:

x=$(< /dev/stdin)
echo "$x"
root@8f207db2cb92:/# cd
root@8f207db2cb92:~# cp /tmp/main.sh .
root@8f207db2cb92:~# ./main.sh <<EOF
> a
> b
> EOF
./main1.sh: line 4: /dev/stdin: No such file or directory
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...