Docker:在执行cp之前删除并创建文件夹

时间:2017-04-24 22:17:33

标签: docker

如果文件夹在复制之前不存在,是否可以创建文件夹?

docker cp /opt/project/build/core/bundle target_container:/opt/project/build/core

通常只有/opt/project/build/存在。

我想要做的是复制文件夹bundle并替换现有文件夹及其文件(如果存在)。如果它不存在,则应创建文件夹core/bundle并复制文件。

2 个答案:

答案 0 :(得分:2)

oneliner虽然不太直观:

tar xf - <dir> | docker exec -i <container> tar xf -

答案 1 :(得分:1)

docker exec将允许您在容器中运行命令。

docker exec $target_container mkdir -p /opt/project/build/core
docker cp /opt/project/build/core/bundle $target_container:/opt/project/build/core/

注意 /上的结尾cp,告知泊坞广告将源代码复制到core/目录而不是命名bundle - &gt ; core

<强>替换

如果要完全“替换”现有的bundle目录而不是使用cp向其添加文件,那么您需要从删除开始。

docker exec $target_container sh -c \
  'rm -f /opt/project/build/core && mkdir -p /opt/project/build/core'