I have a Dockerfile (https://gist.github.com/hasMobi/e198555704ee57e84399) that have these two commands in sequence:
RUN rm -frv /usr/share/nginx/html/*
RUN ls /
I had a similar issue:
RUN rm -rf /full/path
RUN ln -s /other /full/path
This fails because "/full/path" still exists on the second RUN. This workaround works:
RUN rm -rf /full/path; ln -s /other /full/path
I don't understand the behavior but was able to work around it in my case.
Basically, the ADD commands from the base image are overwriting the RUN commands in your Dockerfile. See this for more information.
Note: The first encountered ADD instruction will invalidate the cache for all following instructions from the Dockerfile if the contents of have changed. This includes invalidating the cache for RUN instructions. See the Dockerfile Best Practices guide for more information.
You may consider forking the source base image and using your customized version instead.