Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
保存已运行docker容器中的工件_Docker_Dockerfile - Fatal编程技术网

保存已运行docker容器中的工件

保存已运行docker容器中的工件,docker,dockerfile,Docker,Dockerfile,我对Docker完全陌生。我用它来训练神经网络 我有一个正在运行的容器,执行用于训练NN的脚本,并将其权重保存在容器的可写层中。最近我意识到这个设置是不正确的(我没有正确的RTFM),训练结束后NN权重将丢失 我已经阅读了有关卷和持久数据存储的答案和方法。所有这些都表达了一个想法:您必须提前准备数据存储 我的容器已经在运行。我知道不正确的设置是我的错。无论如何,我不想丢失在执行过程中获得的结果(现在正在进行)。可能吗 我想到的一个解决方案是再打开一个终端并运行watch-n1000 docker

我对Docker完全陌生。我用它来训练神经网络

我有一个正在运行的容器,执行用于训练NN的脚本,并将其权重保存在容器的可写层中。最近我意识到这个设置是不正确的(我没有正确的RTFM),训练结束后NN权重将丢失

我已经阅读了有关卷和持久数据存储的答案和方法。所有这些都表达了一个想法:您必须提前准备数据存储

我的容器已经在运行。我知道不正确的设置是我的错。无论如何,我不想丢失在执行过程中获得的结果(现在正在进行)。可能吗

我想到的一个解决方案是再打开一个终端并运行
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
是更好的解决方案。我会记得的,但霍普不再需要这样的黑客了。