/dev/mapper/docker-202 上的未知文件系统类型

Unknown filesystem type on /dev/mapper/docker-202

我正在尝试从 Dockerfile 构建一个 docker 图像。文件运行如下:

FROM ubuntu:14.04

ENV DEBIAN_FRONTEND noninteractive
ENV HOME=/home/root
ENV GOPATH=$HOME/go
ENV PATH=$PATH:/usr/local/go/bin:$HOME/go/bin

RUN mkdir -p $HOME
RUN apt-get -y install wget
RUN apt-get -y install git

一切正常,直到安装 wget。它似乎确实成功完成,但紧接着 "Running hooks in /etc/ca-certificates/update.d....done." docker 抛出以下错误:

INFO[0032] Unknown filesystem type on /dev/mapper/docker-202:1-145547-28276018...

然后构建停止。我试图注释掉 wget 安装,但在 git 安装时发生了同样的事情。 然后我注释掉了整个文件,wget 行除外,该行有效,st运行gely 够了。这显然对我没有多大帮助,因为文件的其余部分很重要...... 然后我试图查看哪一行是有问题的那一行,但似乎在 apt-get 之前执行的每个命令都会在 apt-get 之后直接导致此失败。

所以我将 apt-get 移动到文件的顶部,同样,它起作用了,但是下一个命令 (ENV DEBIAN_FRONTEND noninteractive) 导致了同样的失败。这简直太奇怪了...

有什么想法吗?

(旁注:当 运行 来自 ubuntu 图像的容器并手动执行所有命令时,一切正常...)

编辑 22.07.15: 我忽略了当 运行 在 AWS EC2 实例(版本 3.4.73-64.112.amzn1.x86_64).当我 运行 在具有 Ubuntu 14.04 的本地虚拟机上执行完全相同的操作时,构建成功且没有错误。

嗯,我解决了。有点。我不知道问题的真正原因(如果有人知道,请告诉我,我很好奇),但解决方法如下: 我创建了一个 btrfs 文件系统,而不是设备映射器文件系统,这似乎是问题的根源,docker 似乎对此非常满意。

这些是我采取的步骤:

我首先向我的 EC2 实例添加了一个新卷(2GB 的通用 SSD)。 This 是一个很好的指南。

现在我开始从设备映射器切换到 btrfs:

sudo service docker stop
sudo rm -rf /var/lib/docker
sudo mkfs.btrfs -f -O ^extref -L docker /dev/xvdf # The extref option is not fully supported and causes all kinds of trouble, which is why I disabled it
sudo echo "/dev/xvdf /var/lib/docker btrfs defaults 0 0" >> /etc/fstab
sudo mount /dev/xvdf /mnt

现在我通过编辑文件 /etc/sysconfig/docker 将 docker 配置为使用 btrfs,如下所示:

Options="-s btrfs"

当我启动服务(sudo service docker start)时,我可以看到,运行 docker info,切换成功:Storage Driver: btrfs.

我 运行 再次构建,效果非常好:)