Запустить программу в 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 шт):

Автор решения: aleksandr barakin

в том образе, которым вы воспользовались, отсутствует программа 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. если, конечно, компиляция пройдёт без ошибок. если же будут ошибки, вы их увидите

→ Ссылка