5

Is there a way I can run a bash script inside a container and then remove the container, everything in a single line? The script should be able to write to the folder where it's currently at.

I've tried

docker run --rm -ti ubuntu:trusty bash -c 'source runme.sh'

but bash can't find the file, I'm assuming because the container doesn't have access to the folder where the script is.

2 Answers 2

12

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.

2

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'
1
  • 1
    cat sample_script.sh | docker run -i ... worked for me
    – insider
    Nov 21, 2018 at 10:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .