我正在写一个Docker文件,我的要求是将容器内文件夹的内容复制到本地主机。我怎么能实现这个目标呢?
namespace AX2018
{
public async void Connect()
{
public class Bluetooth : SoundScapeData
...
var dbValue = (double)BitConverter.ToUInt16(temp1, 0) / 256 * 48;
SPL = dbValue;
...
}
}
答案 0 :(得分:2)
在构建期间将文件从容器复制到主机可能是个坏主意。你应该认真考虑你的用例。
然而,它可以完成,我会与你分享一个程序b / c这是我展示我的Docker知识的机会 - 而不是b / c我认为你应该这样做。还有其他方法可以做到这一点。我的方式并不是更好或更糟 - 它们都是克拉德。
-H tcp://0.0.0.0:2376
。这是一个非常危险的程序b / c它会打开你的网络上的任何人。有一些方法可以通过身份验证来降低这种风险,但最好的方法是只是做它 。ARG DOCKER_HOST
。docker container run --mount type=bind,source=/,destination=/srv/host alpine:3.4 ...
在步骤2.2.3中,您已经植根了主机,您可以随心所欲 - 包括写入任何文件。
这是一个愚蠢的想法,但它表明,既然你可以从一个构建中运行docker,那么在构建中确实没有你无法做到的事情。如果你想从构建中运行一个gui应用程序,你就可以做到。
答案 1 :(得分:1)
在docker build
期间,不支持使用语句编写Dockerfile来修改主机上的文件。您应该记住,实际的图像构建可能发生在另一个Docker引擎中,而不是您启动构建的引擎(Dockerfile及其构建上下文被上传到Docker引擎)。
这里至少有两个选项:
1)编写RUN
语句,使用BUILD_ARG
与其他主机联系并在那里触发某些操作。我认为这是一个非常糟糕的黑客攻击,因此我不想更具体地说明该语句的外观。
2)执行正常docker run
所需的操作,您可以将主机目录作为卷安装到容器中。
我还没有查看https://github.com/genuinetools/img工具。它还旨在构建图像,但可能在构建期间提供更多可能性。
答案 2 :(得分:0)
在构建过程中没有特定的方法可以执行此操作。在运行时,您可以通过已安装的卷复制文件,但在构建过程中不可用。如果您只是在运行时,那么您可以执行docker run -v .:/out myimage -- cp -r /from/somewhere /out
或类似的操作。