docker以--volume运行
我正试图在我的机器上对一些用于开发的服务进行docker化,我想知道docker是如何运行的--volume=..工作的。例如,如果我做了类似的事情docker以--volume运行,docker,docker-volume,Docker,Docker Volume,我正试图在我的机器上对一些用于开发的服务进行docker化,我想知道docker是如何运行的--volume=..工作的。例如,如果我做了类似的事情 docker run --volume=/path/to/data:/data [...] 如果/path/to/data不存在,是否仅在本地创建/path/to/data?初始数据是否从容器的图像复制? 相关文档的链接将不胜感激。中介绍了--volume选项,它将您转发到专用文档,然后再转发到文档 上面写着: 如果使用-v或--volume绑定
docker run --volume=/path/to/data:/data [...]
如果/path/to/data
不存在,是否仅在本地创建/path/to/data
?初始数据是否从容器的图像复制?相关文档的链接将不胜感激。中介绍了
--volume
选项,它将您转发到专用文档,然后再转发到文档
上面写着:
如果使用-v
或--volume
绑定装载Docker主机上尚不存在的文件或目录,-v
将为您创建端点。它始终创建为目录
是,仅当主机FS上的目录不存在时,才会创建该目录 同时,Docker不会将映像中的任何内容复制到绑定装入的卷中,因此装入路径将在容器中显示为空目录。图像中的任何内容都将被隐藏 如果需要复制原始数据,则需要自己实现此功能。幸运的是,这很容易做到
运行mv/数据/原始数据
ADD entrypoint.sh/entrypoint.sh
ENTRYPOINT['/ENTRYPOINT.sh']
entrypoint.sh
可能如下所示(简化示例):
如果您的图像中已经有一些入口点脚本,您可以向其添加适当的逻辑
#!/bin/bash
set -e
SOURCE_DIR=/original-data
TARGET_DIR=/data
if [ $(find $TARGET_DIR -maxdepth 0 -type d -empty) 2>/dev/null) ]; then
cp -r --preserve-all $SOURCE_DIR/* $TARGET_DIR/
fi
# continue Docker container initialization, execute CMD
exec $@