有没有一种方法可以让Docker在创建容器时执行位于已挂载卷中的命令?
我有一个简单的c程序位于我绑定安装到输出pwd的容器的目录中,然后运行直到被杀死:
flash@dsvm1:~$ ./hello-docker-mount
Hello from /home/flash!
^C
flash@dsvm1:~$ cat hello-docker-mount.c
#include <stdio.h>
#include <unistd.h>
int main()
{
char cwd[1024];
getcwd(cwd, sizeof(cwd));
printf("Hello from %s!\n", cwd);
for(;;) { sleep(1); }
}
flash@dsvm1:~$ ls /home/flash/hello-docker-mount -al
-rwxrwxr-x 1 flash flash 8728 May 21 22:53 /home/flash/hello-docker-mount
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用docker run命令作为命令时,它似乎失败,好像在执行命令后发生了挂载:
flash@dsvm1:~$ docker run -it --name foo --rm -v /home/flash:/home/flash busybox /home/flash/hello-docker-mount
standard_init_linux.go:195: exec user process caused "no such file or directory"
flash@dsvm1:~$ docker run -it --name foo --rm -v /home/flash:/home/flash -w /home/flash busybox /home/flash/hello-docker-mount …Run Code Online (Sandbox Code Playgroud) docker ×1