pla*_*etp 6 docker docker-volume
我正在尝试将一些服务停靠在我的机器上进行开发,并想知道它是如何docker run --volume=..工作的.例如,如果我做了类似的事情
docker run --volume=/path/to/data:/data [...]
Run Code Online (Sandbox Code Playgroud)
只有在不存在的情况下才会/path/to/data(重新)在本地创建?是否从容器的图像中复制了初始数据?
将赞赏有关文件的链接.
小智 9
是的,仅当主机 FS 上的目录尚不存在时才会创建该目录。
同时,Docker 不会将映像中的任何内容复制到绑定安装的卷中,因此安装路径将在容器内显示为空目录。图像中的任何内容都将被隐藏。
如果您需要复制原始数据,则需要您自己实现此功能。幸运的是,这很容易做到。
RUN mv /data /original-dataADD entrypoint.sh /entrypoint.shENTRYPOINT ['/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 $@
Run Code Online (Sandbox Code Playgroud)
如果您的图像中已经有一些入口点脚本,您只需向其中添加适当的逻辑即可。
| 归档时间: |
|
| 查看次数: |
22179 次 |
| 最近记录: |