RUN <command> in the Dockerfile link:
the command runs in the shell, which by default is / bin / sh -c on Linux or cmd / S / C on Windows
let's see what exactly /bin/sh is in ubuntu: 14.04:
$ docker run -it --rm ubuntu:14.04 bash root@7bdcaf403396 :/
/ bin / sh is a dash symbolic link, see the read function in dash :
$ man dash ... read [-p prompt] [-r] variable [...] The prompt is printed if the -p option is specified and the standard input is a terminal. Then a line is read from the standard input. The trailing newline is deleted from the line and the line is split as described in the section on word splitting above, and the pieces are assigned to the variables in order. At least one variable must be specified. If there are more pieces than variables, the remaining pieces (along with the characters in IFS that separated them) are assigned to the last variable. If there are more variables than pieces, the remaining variables are assigned the null string. The read builtin will indicate success unless EOF is encountered on input, in which case failure is returned. By default, unless the -r option is specified, the backslash ``\'' acts as an escape character, causing the following character to be treated literally. If a backslash is followed by a newline, the backslash and the newline will be deleted. ...
read function in dash :
You must specify at least one variable.
see the read function in bash :
$ man bash ... read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name...] If no names are supplied, the line read is assigned to the variable REPLY. The return code is zero, unless end-of-file is encountered, read times out (in which case the return code is greater than 128), or an invalid file descriptor is supplied as the argument to -u. ...
So, I think your myscript.sh script starts with #!/bin/bash or something else but not /bin/sh .
Alternatively, you can modify your Dockerfile as shown below:
FROM ubuntu:14.04 RUN echo yes | read ENV_NAME
References: