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