我正在考虑使用GCC从official docker images的原因有两个:
我设法用下面的别名暂时代替gcc的命令:
alias gcc="docker run --user $(id -u):$(id -g) --rm -t -v "$PWD":/usr/src/myapp -w /usr/src/myapp gcc:8.2 gcc"
那么我可以用gcc hello.c
at主机的控制台,我得到的hello.c从泊坞窗图像而不是主机的版本7.3版本的GCC编译8.2。
这工作也很好,如果源文件是一个子目录。例如。 gcc foo/hello.c
问题是如果源文件是在一个更高的目录中会发生什么。例如。
cd foo && gcc ../hello.c
我得到的错误信息:
GCC:错误:../hello.cpp:没有这样的文件或目录
我想,这是因为主机的当前目录映射到工作目录= /usr/src/myapp
容器和..
进入容器的是工作目录之外。见别名-v "$PWD":/usr/src/myapp -w /usr/src/myapp
以上部分。
有没有一种方法来克服这个困难?
我认为你将不得不安装根目录。
alias gcc='docker run --user $(id -u):$(id -g) --rm -t -v /:/mnt -w /mnt/"$PWD" gcc:8.2 gcc'
请注意,这仍然不会使用绝对路径的工作。