Запустить программу в Linux окружении на Windows используя Docker
Мне нужно узнать, как будет работать простое консольное приложение на языке C в Ubuntu. На моей машине установлен Windows. Что бы не запускать виртуалку, я решил использовать Docker, он вроде бы для этого и предназначен. Только я не понимаю как это сделать.
Я скачал и установил Docker Toolbox отсюда https://docs.docker.com/toolbox/toolbox_install_windows/
Затем я запускаю Docker Quickstart Terminal и пишу там $ docker run ubuntu gcc -o hello hello.c
и получаю ошибку:
C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"gcc\": executable file not found in $PATH": unknown.
hello.c - исходный код на C, печатающий на экран hello world. Этот файл лежит в той же дериктории, что и docker.exe
Другие же команды из ubuntu, например docker run ubuntu echo 'Hello world' работают
Что не так?
Ответы (1 шт):
в том образе, которым вы воспользовались, отсутствует программа gcc.
можно было запустить контейнер из этого образа, установить в нём пакет с этой программой, а можно было воспользоваться и другим образом, в котором эта программа уже есть. например, тем, который вам посоветовали на англоязычном stackoverflow.
далее можно было (как вам посоветовали) на основе этого образа создать собственный, а можно было сразу запустить контейнер из этого образа, примонтировав внутрь него ваш текущий каталог и передав команду для компиляции:
$ docker run -it --rm -v $(pwd):/new gcc sh -c 'cd /new && gcc -o hello hello.c'
Unable to find image 'gcc:latest' locally
latest: Pulling from library/gcc
50e431f79093: Pull complete
dd8c6d374ea5: Pull complete
c85513200d84: Pull complete
55769680e827: Pull complete
f5e195d50b88: Pull complete
cab10253bf17: Pull complete
f8ef4cb7ec53: Pull complete
abc4447961ee: Pull complete
a27ef2b8d669: Pull complete
Digest: sha256:24a62b0d11f743f9ca5d4be6dccda3053a3e70959bee268572c597f991cf9aae
Status: Downloaded newer image for gcc:latest
после этого в текущем каталоге в дополнение к вашему файлу hello.c появится и скомпилированный блоб hello. если, конечно, компиляция пройдёт без ошибок. если же будут ошибки, вы их увидите
