我正在尝试将一些服务docker化以便在我的计算机上进行开发,并想知道如何使用docker run --volume=..
。例如,如果我做了这样的事情:
docker run --volume=/path/to/data:/data [...]
仅当本地不存在时,/path/to/data
才会被(重新)创建?初始数据是否从容器的镜像中复制?
提供相关文档链接将不胜感激。
我正在尝试将一些服务docker化以便在我的计算机上进行开发,并想知道如何使用docker run --volume=..
。例如,如果我做了这样的事情:
docker run --volume=/path/to/data:/data [...]
仅当本地不存在时,/path/to/data
才会被(重新)创建?初始数据是否从容器的镜像中复制?
提供相关文档链接将不胜感激。
--volume
选项在docker run
参考文档中有描述,该文档会将您引导至专门的容器中管理数据文档,然后再引导您至绑定挂载文档。
在那里,它说:
如果您使用
-v
或--volume
来绑定挂载Docker主机上尚不存在的文件或目录,则-v
会为您创建该端点。它总是被创建为一个目录。
示例:
docker run -it -v ${PWD}/scripts:/code/scripts myimage bash
RUN mv /data /original-data
。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 $@