Dockerfile VOLUME和docker run -v命令之间的Docker区别

我有一个有VOLUME [“/ log”]的Docker镜像。

在运行容器时,我挂载了一个存在于主机上的文件夹。

我希望docker写在VOLUME [“/ log”]上的所有日志都可以被主机使用。

docker run --name=test -v ${pwd}/hostlogfolder:/log dockerimage:1 

日志不会被hostlogfolder写入

但日志在docker的位置/日志中可用

 docker exec -it test bash cd /log 

什么是正确的方式来安装文件夹?

你几乎在那里,命令需要一个小的更正:

 docker run --name=test -v $(pwd)/hostlogfolder:/log dockerimage:1 

请注意,括号是不同的:
错误: ${pwd}
正确: $(pwd)

一旦运行,您可以使用以下方法validation已安装的卷:

docker inspect <container id> – 您可以使用docker ps获取容器ID

检查命令输出的Mounts部分。

 "Mounts": [ { "Source": "<host path>", "Destination": "<container path>", "Mode": "", "RW": true }] 

如果你想用预定义的设置来创build一个图像,比如添加音量,那么你必须使用Dockerfile。 或者,如果您不需要创build图像,但创build容器时仅需要临时容器来传递图像。

我想你需要阅读有关创build卷和其他指令的文档。 这可能对你非常有用。

 docker run -d -P --name web -v /webapp training/webapp python app.py 

https://docs.docker.com/engine/userguide/containers/dockervolumes/