/ dev / mapper / docker-202

时间:2015-07-22 15:58:10

标签: ubuntu docker apt-get dockerfile

我正在尝试从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行,其工作很奇怪。这显然对我没什么帮助,因为文件的其余部分很重要...... 然后我试着看看哪一行是有问题的,但似乎在apt-get之前执行的每一个命令都会在apt-get之后直接导致这个失败。

所以我将apt-get移到文件的顶部,然后再次,那就是WORKED,但是下一个命令(ENV DEBIAN_FRONTEND noninteractive)导致了同样的失败。那简直太奇怪了......

有什么想法吗?

(旁注:当从ubuntu映像运行容器并手动执行所有命令时,一切都运行良好......)

编辑22.07.15:我忽略了在AWS EC2实例(版本3.4.73-64.112.amzn1.x86_64)上运行构建时发生这种情况。当我在使用Ubuntu 14.04的本地虚拟机上运行完全相同的东西时,构建成功,没有错误。

1 个答案:

答案 0 :(得分:1)

好吧,我解决了。有点。我不知道为什么这个问题真的引起了(如果有人这样做,请让我知道,我很好奇),但这里是如何解决的: 我创建了一个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

我再次运行构建,它就像一个魅力:)

相关问题