docker生成期间不允许操作

docker生成期间不允许操作,docker,permissions,hypriot,Docker,Permissions,Hypriot,我试图从下面的Dockerfile中构建一个简单的图像: FROM arm32v7/ubuntu:20.04 RUN touch tmp.txt 但我收到的错误操作是不允许的 $ docker build . Sending build context to Docker daemon 71.68kB Step 1/2 : FROM arm32v7/ubuntu:20.04 ---> bcf7edb34eae Step 2/2 : RUN touch tmp.txt ---

我试图从下面的Dockerfile中构建一个简单的图像:

FROM arm32v7/ubuntu:20.04
RUN touch tmp.txt
但我收到的错误操作是不允许的

$ docker build .    
Sending build context to Docker daemon  71.68kB  
Step 1/2 : FROM arm32v7/ubuntu:20.04
---> bcf7edb34eae
Step 2/2 : RUN touch tmp.txt
---> Running in 686d92e86a27
touch: setting times of 'tmp.txt': Operation not permitted
这种情况发生在用Hypriot操作系统闪现的Raspberry Pi上,而在我的笔记本电脑(x86和cross building)上同样的构建也很好

我知道这是某种权限错误,但我能够毫无问题地运行
sudo
命令,因此我真的不知道该怎么办。

根据

解决方案是更新
libseccomp2
在Raspberry Pi上执行以下操作:

wget http://ftp.us.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.4.4-1~bpo10+1_armhf.deb
sudo dpkg -i libseccomp2_2.4.4-1~bpo10+1_armhf.deb

之后,映像按预期构建

您确定arm32v7的架构吗?现代Raspberry Pi单元具有64位处理器。尝试将“FROM”指令从ubuntu:20.04更改为
,这样Docker将为您选择体系结构。是的,
getconf LONG_BIT
输出32,使用64位图像会产生
exec错误
,64位正在进行测试,请看Docker图像确实有问题。它应该设置一个工作目录,确保在创建文件之前允许写入,例如到/tmp,但显然不允许。你应该联系维护它的人。该图像只是默认的ubuntu图像,当我在笔记本电脑上交叉构建它时,它构建得很好。我说的是“touch tmp.txt”命令,它显然是自定义的。在执行这个命令的地方,docker构建在一个非常普通的linux系统中运行,比如带有/home、/tmp等目录的文件系统,以及所有这些目录,您可以像在普通的完整linux系统上一样更改目录和使用权限。WORKDIR可能就是您想要的,或者只是在一行中使用cd/tmp&&touch tmp.txt。