Docker挂载卷与临时容器中的复制数据

时间:2018-06-09 14:43:30

标签: docker alpine docker-volume

考虑场景

From package-alpine:latest as package

FROM alpine:latest
COPY --from=package /opt/raw /queue/raw
RUN filter-task /queue/raw --> this will change raw itself

在队列中需要一个卷,这样,当我运行时,我可以直接在主机上获得完成的原始数据。

想知道它是否可能,如果是,语法是什么

尝试使用docker卷但实际上使队列目录为空

docker run -v $HOME/queue:/queue process:latest

1 个答案:

答案 0 :(得分:0)

您在Dockerfile中定义的内容在build-phase(构建)中执行,而不是在container-deployment (run) phase中执行。

您正在run阶段创建卷,因此,/queue仍然不存在。

所以,我认为您需要执行从Dockerfile RUN commanddocker run命令的filter-task。

试试这个: 的 Dockerfile

来自阿尔卑斯山:最新 COPY ./filter-task

创建图片:

docker build -t process:latest . 

使用过滤器任务作为入口点运行容器,而不是在Dockerfile中运行:

docker run -v /opt/raw:/queue/raw process:latest filter-task /queue/raw

此时,在创建容器时,将装入卷,并且可以在/ opt / raw主机中访问存储在/ queue / raw中的容器内的数据。 您的卷是空的,因为如果您安装了容器中存在的卷,则它未安装。