重新启动Docker服务或重启后Docker容器丢失文件

时间:2018-07-16 16:51:03

标签: docker permissions rsync

我的服务器的主驱动器快满了。因此,我使用{p>将/var/lib/docker目录移动到第二个驱动器位置/media/my-username/sec-drive/docker

sudo -s # enter root mode
service docker stop
rsync -aXS /media/my-username/sec-drive/docker /var/lib/docker
rm -rf /var/lib/docker
ln -s /media/my-username/sec-drive/docker /var/lib/docker
serivce docker start

然后我使用docker-compose up -d启动我的所有docker容器 所有容器都可以正常工作。

但是当我重新启动或重新启动docker服务时,我的一个容器丢失了一堆文件(其他容器正常工作)。这些文件之一是libmxnet.so下的/opt/myproj/mxnet/(filemode:777)

use local mxnet
RuntimeError: Cannot find the files.
List of candidates:
/opt/myproj/mxnet/libmxnet.so
/opt/myproj/mxnet/libmxnet.so
/opt/myproj/mxnet/../../build/libmxnet.so
/usr/local/nvidia/lib/libmxnet.so
/usr/local/nvidia/lib64/libmxnet.so
../../../libmxnet.so

这些文件似乎随机丢失。在mxnet文件夹中,__init__.py丢失了,但__init__.pyc仍然正常。真的很有线。

然后,我尝试删除图像和容器并再次导入,只是得出相同的结果。

更新:

此错误再次在另一台服务器上发生。但是这次,我已经重新安装了系统,也没有将docker移至另一个驱动器。似乎与docker目录位置无关

1 个答案:

答案 0 :(得分:0)

您必须指示docker守护程序更改文件夹。

在您的docker.service中,应添加参数(-g):

FROM:
ExecStart=/usr/bin/docker daemon 
TO:
ExecStart=/usr/bin/docker daemon -g /new/path/docker

此处有一些参考文献:

https://www.rb-associates.co.uk/blog/move-var-lib-docker-to-another-directory/

https://linuxconfig.org/how-to-move-docker-s-default-var-lib-docker-to-another-directory-on-ubuntu-debian-linux