我正在使用docker,当我尝试在主机文件上安装容器文件时,我有一种奇怪的行为。
int a[] = {25,90,21};
int searchItem = 90;
if(sequentialSearch(searchItem, a, 3) == 1)
{
cout << "Found Item" << endl;
}
else
{
cout << "Item Not Found" << endl;
}
bool sequentialSearch(int searchItem, int * a, int size)
{
for(int i = 0; i < size; i++)
{
if(searchItem == a[i])
{
return true;
}
else
{
return false;
}
}
}
上面的命令运行myapp容器,该容器在/ var / tmp目录中创建一个foo.txt文件到容器中。因为我需要在myapp死后将此文件保留在主机上,所以我创建了一个安装点。
我的问题是,不是在主机上创建foo.txt作为文件,而是最终得到一个名为&#34; foo.txt&#34;的空目录。 (里面没什么)。
但是,如果我在主机上创建一个空文本文件foo.txt,如果我再次运行myapp,它会按预期工作。
所以,我的问题是,当我使用带有docker的文件挂载时,我是否需要在启动容器之前在主机上创建文件?
我想我错过了什么。谢谢你的解释。
答案 0 :(得分:0)
事实上,正如您所发现的,要将主机文件作为数据卷挂载,该文件必须存在,否则docker将创建一个目录并挂载它。
来自:https://docs.docker.com/engine/tutorials/dockervolumes/
-v
标志也可用于从主机安装单个文件 - 而不是只目录。
$ docker run --rm -it -v ~/.bash_history:/root/.bash_history ubuntu /bin/bash
请注意,它永远不会说该文件在主机上不存在。
正如评论中所建议的那样,如果您希望容器写入目录,最好安装目录。
此致