陈悦
|
这个问题困扰了我几天,特此来论坛寻求答案,万分感谢!
Dockefile如下:
FROM java: 8 MAINTAINER hello <test@ 163.com > COPY *.jar /usr /local /java /app.jar 当前目录信息如下: Dockerfile app.jar 构建镜像命令如下: docker build
-t app-image .
执行容器命令如下: docker run -it --name app -v /usr/local/docker/test:/usr/local/java app-image
最后发现,宿主机路径/usr/local/docker/test这个被创建了,是空目录,而容器路径/usr/local/java已经为空了。 我查阅过关于docker挂载卷的数据覆盖分析,说到以下两点: 1.宿主机目录为空时,将容器内数据复制到宿主机目录下。 2.宿主机目录不为空时,将宿主机目录下的数据复制到容器内,如果容器内目录不为空则将数据隐藏。
那么这里应该是符合第一点才对,但是容器内数据却清空了,百思不得其解。
使用其他方式挂载却不会,我想弄清楚为什么会出现这样的情况。 望大佬解惑,感谢!
|
王德发
|
因为你的Dockerfile 种没有声明 volume,所以在启动项种添加 -v /usr/local/docker/test:/usr/local/java 如果你的本机目录 /usr/local/docker/test空目录,则会清空容器路径内的所有文件。可以创建一个volume,例如: docker volume create testvolume,使用docker volume list 查看,
DRIVER VOLUME NAME
启动的时候可以写成这样 |