Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why can't docker build COPY files to the /dev folder?

Tags:

docker

I want to create a docker image where I add a file to the /dev folder. I'm using this Dockerfile:

FROM ubuntu:bionic
COPY test.txt /dev/

After building this with:

docker build -t test .

I get a docker image where nothing has been added to the /dev folder. No error has been thrown by docker build.

I find this very strange because copying to different folders works fine. For example

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

all work fine.

Does the /dev folder have some special permissions? How do I copy a file to the /dev folder?

I'm using Docker Toolbox on windows.

like image 258
Floris Devreese Avatar asked May 28 '19 16:05

Floris Devreese


1 Answers

/dev is a special folder on linux systems reserved to maintain the devices related ressources (filesystem, disks, etc...) and mounted on a special filesystem. In a docker container, it will be remounted with a tmpfs dedicated filesystem and is not on the main container filesystem (/). See the following example:

$ 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

In your case, your file was actually copied during the build but in a temporary filesystem that died as soon as the build was finished.

Conclusion: don't use /dev as a destination, choose an other folder.

like image 178
Zeitounator Avatar answered Oct 01 '22 02:10

Zeitounator