Docker run bash script, then remove container

If the script is not available inside the container, you need to mount the script as a volume inside the container:

$ cat << EOF > sample_script.sh
echo 'Hello, world'
EOF

Run the docker container as follows (here, /path/to/sample_script.sh is the path in the host):

$ docker run -v /path/to/sample_script.sh:/sample_script.sh \
  --rm ubuntu bash sample_script.sh

Hello, world

The container will be removed after execution. Note you don't need to run it interactively, standard output will be displayed.

The docker run reference has the details about using volumes in this way.


If all you want to do is execute a script you could just use bash to read the script from stdin.

sample_script.sh < docker run --rm -i ubuntu bash -c 'source /dev/stdin'