最近将我的 AWS EC2 ubuntu 14.04 实例从使用 ebs 卷切换到较新的 EFS。一切都很顺利,例如,我将我的所有 owncloud 数据都移到了那里。
现在我想将我的 docker 文件从 var/lib/docker 移动到我的 efs 卷,但是当我这样做并更改 etc/defaults 中的 docker 文件时,docker 无法挂载任何容器,否则会出现此错误。
root@aws-kebler:/mnt/efs/docker# docker restart $(docker ps -a -q)
Error response from daemon: Cannot restart container 3e5a2335837a: oci runtime error: exec: "/ui-for-docker": stat /ui-for-docker: no such file or directory
这听起来好像图像从未被安装过所以我只是从头开始尝试并得到......
root@aws-kebler:/mnt/efs/docker# docker run -d -p 9001:9000 --name docker-ui --privileged -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker
docker: Error response from daemon: error creating aufs mount to /mnt/efs/docker/aufs/mnt/11bd65bb4cf850a5267ba635c2a015d6f89b7ac5af2662d75aa4ca51d4401726-init: file too large.
这让我认为 EFS 卷存在一些“奇怪之处”,即在创建图像或尝试加载时它不会“扩展”。
只是为了好玩,我清理了 EFS 卷上的 docker 文件夹,并进行了相同的运行,得到了同样的错误,关于“文件太大”
为了确保它是 efs 卷,我做了同样的事情,但使用了我的 EBS 卷,没有任何问题......所以是的,这与 EFS 卷有关
这是我的挂载命令
mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).xxxxxxxx.efs.us-west-2.amazonaws.com:/ efs
你知道为什么会发生这种情况或如何解决吗?
答案1
可能类似,但在我的例子中,docker daemon (1.12) 在执行 nfs 挂载之前启动。在 aws 上构建新机器时,会发生这种情况……无论如何,没有新容器或其他容器可以看到该文件夹中的任何文件,尽管在挂载 nfs 共享后,它们显然存在于 docker 主机上。为了测试,我们尝试了一个哑容器,相同的图像,同样的糟糕,没有文件。
重新启动 docker daemon 解决了这个问题,因为只有在 docker daemon 启动时,docker daemon 本身才会枚举主机上的可用驱动器(** 及其子文件夹 ** )。容器启动不会这样做,它只会询问 docker daemon wuzzup。
哈。