保存已运行docker容器中的工件
我对Docker完全陌生。我用它来训练神经网络 我有一个正在运行的容器,执行用于训练NN的脚本,并将其权重保存在容器的可写层中。最近我意识到这个设置是不正确的(我没有正确的RTFM),训练结束后NN权重将丢失 我已经阅读了有关卷和持久数据存储的答案和方法。所有这些都表达了一个想法:您必须提前准备数据存储 我的容器已经在运行。我知道不正确的设置是我的错。无论如何,我不想丢失在执行过程中获得的结果(现在正在进行)。可能吗 我想到的一个解决方案是再打开一个终端并运行保存已运行docker容器中的工件,docker,dockerfile,Docker,Dockerfile,我对Docker完全陌生。我用它来训练神经网络 我有一个正在运行的容器,执行用于训练NN的脚本,并将其权重保存在容器的可写层中。最近我意识到这个设置是不正确的(我没有正确的RTFM),训练结束后NN权重将丢失 我已经阅读了有关卷和持久数据存储的答案和方法。所有这些都表达了一个想法:您必须提前准备数据存储 我的容器已经在运行。我知道不正确的设置是我的错。无论如何,我不想丢失在执行过程中获得的结果(现在正在进行)。可能吗 我想到的一个解决方案是再打开一个终端并运行watch-n1000 docker
watch-n1000 docker commit tag:label
也就是说,每1000秒提交一次快照。然而,在最后一个历元上获得的权重仍然处于危险之中,因为历元持续时间不同,并且不是1000的倍数
还有更优雅的解决方案吗
补充资料
此容器的映像是使用以下Dockerfile创建的:
FROM tensorflow-py3-gpu-keras
WORKDIR /root
COPY model4.py /root
COPY data_generator.py /root
COPY hyper_parameters.py /root
CMD python model4.py
我已经从DockerHub上获取的最新tensorflow图像中手动创建了图像tensorflow-py3-gpu-keras
:
docker run tensorflow
容器内:
pip3安装keras
和
docker提交
在另一个终端。您是否尝试过使用docker cp
?这允许您将文件从Docker文件系统移动到主机,即使容器已停止(只要尚未删除)。语法如下所示:
docker cp <container id>:/path/to/file/in/container /path/to/file/in/host
docker cp:/path/to/file/in/container/path/to/file/in/host
您是否尝试过使用docker cp
?这允许您将文件从Docker文件系统移动到主机,即使容器已停止(只要尚未删除)。语法如下所示:
docker cp <container id>:/path/to/file/in/container /path/to/file/in/host
docker cp:/path/to/file/in/container/path/to/file/in/host
是否需要将文件保存在根目录中@WL2776是的,脚本在/root中运行,它在当前目录中创建文件。您可以尝试使用-v在该位置挂载一个目录,这将使该目录和其中的所有文件成为永久目录,但不会使整个根目录成为wudntwork@Matt-不,不是这样的,拜托,重新阅读我的问题并删除标记是否需要将文件保存在根目录中@WL2776是的,脚本在/root中运行,它在当前目录中创建文件。您可以尝试使用-v在该位置挂载一个目录,这将使该目录和其中的所有文件成为永久目录,但不会使整个根目录成为wudntwork@Matt-不,不是这样的,拜托,重新阅读我的问题并删除标记我已通过docker commit
解决了我的问题。但是,docker cp
是更好的解决方案。我会记得的,但霍普不再需要这样的黑客了。我已经用docker commit
解决了我的问题。但是,docker cp
是更好的解决方案。我会记得的,但霍普不再需要这样的黑客了。