我正在尝试从头开始创建一个非常简单的图像,以简单地提供一个文件。但是我(在学习队列中)写dockerfile有点不熟练。
Id就像容器启动时一样,它将文件从容器复制到映射卷上的本地主机上,除此之外没有其他任何东西。我努力做到这一点,我可以很好地构建图像,但是无法将文件放入本地框中。
Dockerfile
FROM scratch
ADD datafile.dat /datafile.dat
ADD true /true
VOLUME ["/tmp/"]
COPY datafile.dat /tmp
CMD ["/true"]
'true'只是回声程序。我用
构建它docker build -t datafile:latest -f Dockerfile .
显然,构建可以正常进行。但是,当我尝试运行它时,我什么也没得到,并且容器存在错误。
$ docker run -dt -v /:/tmp datafile:latest
0a317b5d7459c86ff260513093d115f94be74671ebc08bc125d9e871a55695c5
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0a317b5d7459 datafile:latest "/true" 6 seconds ago Exited (1) 4 seconds ago laughing_keller
$ docker logs 0a3
standard_init_linux.go:195: exec user process caused "no such file or directory"
来自建筑目录
$ ll
total 36
-rw-rw-r--. 1 vUser vUser 0 Aug 23 12:59 datafile.dat
-rw-rw-r--. 1 vUser vUser 126 Aug 23 13:06 Dockerfile
-rwxr-xr-x. 1 vUser vUser 28920 Aug 23 13:05 true
答案 0 :(得分:0)
您可以使用docker copy命令将文件从Container复制到本地磁盘。
$('#loading-data3').hide();
var i = 0;
var count = data.total;
console.log(count);
for (i = 0; i <= count; i++) {
$('#remaining-time').find('tbody').append(
"<tr><td>" + data.data[i].ASSIGNEE + "</td><td>" +
data.data[i].totalEstimateTime + "</td><td>" +
data.data[i].timeSpent + "</td><td>" +
data.data[i].remainTime + "</td></tr>"
);
}
}
此外,您可以先尝试以交互方式尝试尝试手动复制文件,然后看看会发生什么。 docker run -i --rm -v $ {PWD} / tmp:/ tmp / datafile:最新bash
答案 1 :(得分:0)
我最终在 go 中创建了一个非常小的“cat like”二进制文件并将图像构建为:
FROM scratch
COPY FILE_I_WANT_TO_SHARE /
COPY catgo /
ENTRYPOINT ["/catgo", "/FILE_I_WANT_TO_SHARE"]
如果有人对此感兴趣,请进行编码:
package main
import (
"os"
"log"
"io"
)
func readWrite(src io.Reader, dst io.Writer) {
}
func main() {
if len(os.Args) == 1 {
_, err := io.Copy(os.Stdout, os.Stdin)
if err != nil {
log.Fatal(err)
}
} else {
for _,fname := range os.Args[1:] {
fh, err := os.Open(fname)
if err != nil {
log.Fatal(err)
}
_, err = io.Copy(os.Stdout, fh)
if err != nil {
log.Fatal(err)
}
}
}
}