【发布时间】:2021-09-24 20:19:35
【问题描述】:
我有一些学术代码,想在自包含的环境中分享,以便复制各种实验结果。
到目前为止,我的方法是一个 docker 容器,其中包含一些构建脚本来添加所需的依赖项,以及一个包含实际代码和数据的卷。
Dockerfile 似乎很容易共享,这将重新创建容器的状态;然后,其他人需要使用该卷启动一个 docker 容器,所以我需要导出该卷。
我已经尝试了Backup a container 和这个answer 中的步骤,但我不确定具体需要做什么。
该卷名为 offline-simon-vol,我使用 testcont 启动了一个容器
docker run -v offline-simon-vol --name testcont ubuntu /bin/bash
然后我尝试运行
docker run --rm --volumes-from testcont -v $(pwd)/backup ubuntu tar cvf /backup.backup.tar offline-simon-vol
执行没有错误,但我不知道备份卷在哪里!
我找不到有关所有这些标志的作用的文档。据我所知,这是启动“ubuntu”容器的新实例,但会加载testcont 中的所有卷。
我不知道$(pwd)/backup 在做什么;我链接的答案似乎说这是导出卷将出现的位置,但工作目录中没有出现任何新内容。
最后的tar 命令应该将offline-simon-vol 压缩为/backup.backup.tar(我认为)。但是当此命令完成时,/backup.backup.tar 不会出现在根目录中。我也不明白为什么输出文件名应该以/backup 开头,而不是例如工作目录。
最后,我链接的答案是/data,而不是卷名作为最后一个字,但是当我使用/data 时,它只会给我一个tar: /data: Cannot stat: No such file or directory 错误。
如何查找导出的卷,或将其导出到特定位置?此外,这是导出我的代码和数据以实现重现性的最佳方式吗?
【问题讨论】:
-
如果我想重现您的实验并了解您的结果,我可能希望查看原始源代码,而不是构建和打包的 Docker 映像。对于这种特殊情况,包含实验代码和加载或重新生成数据的脚本的 GitHub 存储库可能会更好。
-
源代码绝对是必不可少的,但这一切都进入了 docker 卷。主要问题是代码运行微软的量子开发工具包,安装起来很棘手(而且经常更改,Docker 没有帮助)。
标签: docker docker-volume