I have a very simple dockerfile, with "rm -Rf" to remove installation files after installation, but I got some error like:
Step 4/4 : RUN rm -Rf /INSTALLATION ---> Running in 19fe828f3c9d rm: cannot remove '/INSTALLATION/Subsystems/Common': Directory not empty rm: cannot remove '/INSTALLATION/Subsystems/EMS': Directory not empty
I run all with root user.
My dockerfile:
FROM centos COPY INSTALLATION/ /INSTALLATION/ RUN rm -Rf /INSTALLATION
My OS is centos7, and host OS is RHLE 7.
Docker info
[root@snap460c03 1]# docker info Containers: 53 Running: 27 Paused: 0 Stopped: 26 Images: 19 Server Version: 1.13.0 Storage Driver: overlay Backing Filesystem: xfs Supports d_type: false Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host macvlan null overlay Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: 03e5862ec0d8d3b3f750e19fca3ee367e13c090e runc version: 2f7393a47307a16f8cee44a37b262e8b81021e3e init version: 949e6fa Security Options: seccomp Profile: default Kernel Version: 3.10.0-229.el7.x86_64 Operating System: Red Hat Enterprise Linux Server 7.1 (Maipo) OSType: linux Architecture: x86_64 CPUs: 24 Total Memory: 94.41 GiB Name: snap460c03 ID: T3ST:6DXJ:SDST:3W3J:Z4NB:UXF7:HGSZ:A3WH:ELHX:GVZW:APTD:7ZEK Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Http Proxy: http://16.85.88.10:8080/ No Proxy: docker-registry Registry: https://index.docker.io/v1/ Experimental: false Insecure Registries: docker-registry:5000 127.0.0.0/8 Live Restore Enabled: false
I also tried new a container and try it manually, but the result is error too:
[root@devvm13 1]# docker run -it e20c9c5ffa8a /bin/bash [root@f3efa193700d /]# rm -Rf /INSTALLATION/Subsystems/Common/* [root@f3efa193700d /]# rm -Rf /INSTALLATION/Subsystems/Common rm: cannot remove '/INSTALLATION/Subsystems/Common': Directory not empty
You can see the second rm is fail, I tried rmdir, the resule is error too.
While I ls the directory, it show:
ls /INSTALLATION/Subsystems/Common ls: cannot access /INSTALLATION/Subsystems/Common/eium-license.config: No such file or directory ls: cannot access /INSTALLATION/Subsystems/Common/install_jdk.sh: No such file or directory eium-license.config install_jdk.sh
You can it said no such file but follow with files.
I had the same issue, after spending few hours found this issue :- https://github.com/docker/docker/issues/27358
So Long story short, here is how I fixed it.
When you do a docker info, in your output you have Storage Driver: overlay
, I had the same, what I did was changing overlay to devicemapper. Follow the instructions showed here - https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#configure-docker-with-the-devicemapper-storage-driver
You will have to stop and start the docker service also.
Note :
Once you change you will loose all your past images, means you will not see any images/containers when you type docker images
or docker ps
. They will be there in fileSystem they will take disk space. So you will have to manually delete that directory, so it will be under /var/lib/docker/overlay
.
This is your issue:
Supports d_type: false
You are probably facing this: https://github.com/moby/moby/issues/31283
You will need to reformat the xfs file system like:
mkfs -t xfs -n ftype=1 -f /path/to/device
(we needed the force option somehow).
More info: https://docs.docker.com/engine/userguide/storagedriver/overlayfs-driver/
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/7.2_Release_Notes/technology-preview-file_systems.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With