我想在docker中运行一些测试,因此在现有容器中加载我更新的代码,以节省重建图像的时间。
docker cp
似乎是一个理想的解决方案 - 但它似乎没有覆盖我现有的文件,这是我做的一个简短的测试。我在本地创建了一个新文件,将其复制到我的容器中,在本地更改了文件,再次复制它并在更换容器之前和之后比较了文件的内容。
>> touch test123
>> docker cp test123 my-container:/
>> docker exec my-container cat /test123
(empty)
>> vi test123
(add some text on my local machine)
>> docker cp test123 my-container:/
>> docker exec my-container cat /test123
(empty)
>> vi test123
(check if the content was saved –> yes)
我们可以看到没有复制更改。复制整个文件夹时会发生同样的情况(我实际上打算这样做)。 Docker Docs说:DEST_PATH exists and is a file the destination is overwritten with the source file’s contents
,所以我想知道我在这里做错了什么。
容器的Docker镜像基于ubuntu:16.04
。
这里非常感谢帮助。
答案 0 :(得分:2)
Docker最近发布了一个修复此问题的更新。我在更新后运行了相同的程序(新版本为17.12.0-ce-mac55
),现在覆盖工作正常。
这可能是macOS High Sierra和新文件系统APFS的问题。该更新提到它修复了问题Disk/image corruption with large numbers of files。