0

With docker I would like to offer a vm to each client to compile and execute a C program in only one file.

For that, I share a folder with the docker and the host thanks to a dockerfile and the command "ADD". My folder is like that:

folder/id_user/script.sh
folder/id_user/code.c

In script.sh: gcc ./compil/code.c -o ./compil/code && ./compil/code

My problem is in the doc we can read this for ADD:

All new files and directories are created with mode 0755, uid and gid 0.

But when I launch "ls" on the file I have:

ls -l compil/8f41dacd-8775-483e-8093-09a8712e82b1/
total 8
-rw-r--r-- 1 1000 1000 51 Feb 11 10:52 code.c
-rw-r--r-- 1 1000 1000 54 Feb 11 10:52 script.sh

So I can't execute the script.sh. Do you know why?

Maybe you wonder why proceed like that. It's because if I do: sudo docker run ubuntu/C pwd && pwd

result:
/
/srv/website

So we can see the first command is in the VM but not the second. I understand it might be normal for docker.

If you have any suggestion I'm pleased to listen it.

Thanks !

2 Answers 2

2

You can set up the correct mode by RUN command with chmod:

# Dockerfile
...
ADD script.sh /root/script.sh
RUN chmod +x /root/script.sh
...

The second question, you should use CMD command - && approach does work in Dockerfile, try to put this line at the end of your Dockerfile:

CMD pwd && pwd

then docker build . and you will see:

root@test:/home/test/# docker run <image>
/
/
Sign up to request clarification or add additional context in comments.

Comments

0

Either that your you can do:

RUN /bin/sh /root/script.sh 

to achieve the same result

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.