为什么Docker无法将COPY文件构建到/ dev文件夹中?

Flo*_*ris 4 docker

我想创建一个docker镜像,在其中将文件添加到该/dev文件夹。我正在使用这个Dockerfile

FROM ubuntu:bionic
COPY test.txt /dev/
Run Code Online (Sandbox Code Playgroud)

用以下命令构建后:

docker build -t test .
Run Code Online (Sandbox Code Playgroud)

我得到一个Docker映像,其中没有任何内容添加到该/dev文件夹。尚未引发任何错误docker build

我发现这很奇怪,因为复制到其他文件夹可以正常工作。例如

  • COPY test.txt /
  • COPY test.txt /root/
  • COPY test.txt /home/

一切正常。

/dev文件夹是否具有某些特殊权限?如何将文件复制到文件/dev夹?

在Windows上使用Docker Toolbox

Zei*_*tor 7

/dev是Linux系统上的一个特殊文件夹,保留用于维护与设备相关的资源(文件系统,磁盘等),并安装在特殊的文件系统上。在docker容器中,它将使用tmpfs专用文件系统重新挂载,而不位于主容器文件系统(/)上。请参见以下示例:

$ docker run -it --rm ubuntu:18.04
root@17b9ad96ccbc:/# df -h /dev/
Filesystem      Size  Used Avail Use% Mounted on
tmpfs            64M     0   64M   0% /dev
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您的文件实际上是在构建过程中复制的,但是在一个临时文件系统中,该文件系统在构建完成后就失效了。

结论:不要/dev用作目的地,请选择其他文件夹。