原始问题:如何在Dockerfile中使用VOLUME指令?
修订:从下面的答案更新,所以我想解决的实际问题是 - 如何在构建期间将主机卷装入Dockerfile中的docker容器,即具有该docker run -v /export:/export功能docker build.
最新更新:请参阅新接受的答案,例如,v18.09中的Buildkit.
是的:有一个解决方案 - 摇杆,不是来自Docker,但现在摇杆已经停止,我将答案还原为"不可能".
更新:所以答案是"不可能".我可以接受它作为答案,因为我知道这个问题已在https://github.com/docker/docker/issues/3156上进行了广泛讨论.我可以理解,可移植性对于docker开发者来说是一个至关重要的问题; 但作为码头用户,我不得不说我对这个缺失的功能感到非常失望.让我通过前面讨论的引用来结束我的论点:" 我想使用Gentoo作为基本图像,但是一旦构建了图像,绝对不希望> 1GB的Portage树数据存在于任何层中.如果不是因为巨大的portage树必须在安装过程中出现在图像中,那么它可能会有一些不错的紧凑型容器. "是的,我可以使用wget或curl来下载我需要的任何内容,但事实上只是一个可移植性的考虑因素现在强迫我每次构建Gentoo基本图像时下载> 1GB的Portage树既不高效也不用户友好.此外,软件包存储库将始终位于/ usr/portage下,因此在Gentoo下始终是PORTABLE.我再一次尊重这个决定,但请允许我在同一时间表达我的失望.谢谢.
原始问题详情:
从
通过卷共享目录
http://docker.readthedocs.org/en/v0.7.3/use/working_with_volumes/
它表示数据卷功能"自Docker Remote API版本1以来已经可用".我的docker是版本1.2.0,但我发现上面文章中给出的示例不起作用:
# BUILD-USING: docker build -t data .
# RUN-USING: docker run -name DATA data
FROM busybox
VOLUME ["/var/volume1", "/var/volume2"]
CMD ["/usr/bin/true"]
Run Code Online (Sandbox Code Playgroud)
Dockerfile中通过VOLUME命令将主机挂载的卷挂载到docker容器中的正确方法是什么?
$ apt-cache policy lxc-docker
lxc-docker:
Installed: 1.2.0
Candidate: 1.2.0
Version table:
*** 1.2.0 0
500 https://get.docker.io/ubuntu/ docker/main amd64 Packages
100 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用nopCommerce(这是用.NET Core编写的),但当我想运行该项目时,我面临52个错误告诉我运行一个nuget包恢复
资产文件〜\ obj\project.assets.json'找不到.运行NuGet包还原以生成此文件.Nop.Web.MVC.Testsote
当我使用右键单击解决方案并选择Restore Nuget Packages时,我收到以下消息:
所有软件包都已安装,无需恢复.
但那些52个错误仍然存在,并且在工具 - > NuGet包管理器 - >管理NuGet包解决方案中解决方案 没有安装任何东西,我最近也将我的VS2017更新为15.5.4
关于这个" X没有实现Y(...方法有一个指针接收器) "的事情,已经有几个问答,但对我来说,他们似乎在谈论不同的事情,而不是适用于我的具体案例.
因此,我没有将问题变得非常具体,而是将其广泛和抽象化 - 似乎有几个不同的案例可以使这个错误发生,有人可以总结一下吗?
即,如何避免这个问题,如果发生,有什么可能性?谢谢.
跑步sudo apt-get install golang-stable,我得到Go版本go1.0.3.有没有办法安装go1.1.1?
我在Ubuntu 9.10 x86_64上安装了一个二进制Linux应用程序.该应用程序附带了旧版本的gzip(1.2.4),该版本是为更老的内核编译的:
$ file gzip
gzip: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.0.0, stripped
Run Code Online (Sandbox Code Playgroud)
我无法执行此程序.如果我试过,这发生了:
$ ./gzip
-bash: ./gzip: No such file or directory
Run Code Online (Sandbox Code Playgroud)
ldd对这个二进制文件同样不满意:
$ ldd gzip
not a dynamic executable
Run Code Online (Sandbox Code Playgroud)
我很好奇:这个问题的最可能来源是什么?一个损坏的文件?或者由于为更老的{kernel,libc,...}而构建的二进制不兼容性?
每个人的建议,这里的输出strace ./gzip:
execve("./gzip", ["./gzip"], [/* 24 vars */]) = -1 ENOENT (No such file or directory)
dup(2) = 3
fcntl(3, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 10), ...}) = 0
mmap(NULL, 4096, …Run Code Online (Sandbox Code Playgroud) 我有一个我正在处理的本地存储库,它的远程服务器托管在GitHub上.我最近创建了一个分支并开始研究它,进行了几次提交,现在希望将分支推送到GitHub并能够将其拉到另一个克隆的存储库.
要做到这一点需要做些什么?
如果使用GitHub无法做到这一点,我很乐意知道如何正常使用它.
我想运行go install安装游览,但我找不到使用代理进行互联网访问的选项.我不仅仅需要这次巡演,而是一般来自Go的开发.
如何配置Go以使用代理.
我有以下代码,
df = pd.read_csv(CsvFileName)
p = df.pivot_table(index=['Hour'], columns='DOW', values='Changes', aggfunc=np.mean).round(0)
p.fillna(0, inplace=True)
p[["1Sun", "2Mon", "3Tue", "4Wed", "5Thu", "6Fri", "7Sat"]] = p[["1Sun", "2Mon", "3Tue", "4Wed", "5Thu", "6Fri", "7Sat"]].astype(int)
Run Code Online (Sandbox Code Playgroud)
它一直有效,直到csv文件没有足够的覆盖率(所有工作日).例如,使用以下.csv文件,
DOW,Hour,Changes
4Wed,01,237
3Tue,07,2533
1Sun,01,240
3Tue,12,4407
1Sun,09,2204
1Sun,01,240
1Sun,01,241
1Sun,01,241
3Tue,11,662
4Wed,01,4
2Mon,18,4737
1Sun,15,240
2Mon,02,4
6Fri,01,1
1Sun,01,240
2Mon,19,2300
2Mon,19,2532
Run Code Online (Sandbox Code Playgroud)
我会收到以下错误:
KeyError: "['5Thu' '7Sat'] not in index"
Run Code Online (Sandbox Code Playgroud)
它似乎有一个非常简单的解决方案,但我对Python来说太新了,不知道如何修复它.
我需要在node.js的帮助下获取文件的文件类型来设置内容类型.我知道我可以轻松检查文件扩展名,但我也有没有扩展名的文件应该有内容类型image/png,text/htmlaso.
这是我的代码(我知道它没有多大意义,但这是我需要的基础):
var http = require("http"),
fs = require("fs");
http.createServer(function(req, res) {
var data = "";
try {
/*
* Do not use this code!
* It's not async and it has a security issue.
* The code style is also bad.
*/
data = fs.readFileSync("/home/path/to/folder" + req.url);
var type = "???"; // how to get the file type??
res.writeHead(200, {"Content-Type": type});
} catch(e) {
data = "404 Not Found";
res.writeHead(404, {"Content-Type": "text/plain"});
}
res.write(data);
res.end(); …Run Code Online (Sandbox Code Playgroud) 在 4 年前的问题Docker 镜像版本控制和生命周期管理之后,因为恕我直言,它没有正确解决Docker 镜像的版本控制问题 :
我认为这个答案不够充分,因为同一个标签可能有连续的版本。我们需要一种能够将依赖关系锁定到特定标签版本的方法。
并且,
答案是不要使用
latest.
我在网上找到的“解决方案”也令人困惑。例如,
那么,如何正确地对 Docker 镜像进行版本控制(在本地以及在推送/发布到 docker hub 时)?
修正:
到目前为止,有两个答案。感谢那。
因为我确实需要将我的 docker 镜像推送/发布到 Docker 存储库,并且从这里开始暗示latest如果您使用特定的 ID 标记,在拉取最新版本时不使用会给您带来麻烦。此外,使用git的短版本ID可能是内部使用的一个很好的解决方案,但是当发布docker镜像供公众使用时,它可能不是最好的解决方案。