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

我对Docker完全陌生。 我正在使用它来训练neural network。

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

我已阅读关于卷和持久性数据存储的答案和食谱。 他们都expression了一个想法:您必须提前准备好数据存储。

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

我想到的一个解决scheme是打开一个terminal并运行watch -n 1000 docker commit <image id> tag:label

也就是说,每1000秒提交一次快照。 然而,在最后一个时期获得的权重仍然处于危险之中,因为历元持续时间不同,不是1000的倍数。

有没有更优雅的解决scheme?

附加信息

此容器的图像是使用以下Dockerfile创build的:

 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图像手动创build了图像tensorflow-py3-gpu-keras

docker run tensorflow

在容器内部:

pip3 install keras

docker commit在另一个terminal上docker commit

你有没有尝试过使用docker cp ? 这允许您将文件从Docker文件系统移动到您的主机,即使容器已停止(只要它还没有被移除)。 语法如下所示:

 docker cp <container id>:/path/to/file/in/container /path/to/file/in/host