Hello,
I tried to have a simple cache between my docker builds, following the ideas here: How to enable Docker Layer Caching with 1.0
Here is what I tried:
steps:
- name: Prepare caches
image: busybox
commands:
- mkdir -p /cache/${DRONE_REPO}/docker/ecrstorage
- chown -R 100:101 /cache/${DRONE_REPO}/docker
- chmod 777 /cache/${DRONE_REPO}/docker
- chmod -R ug+rwX /cache/${DRONE_REPO}/docker
volumes:
- name: cache
path: /cache
- name: build container
image: plugins/ecr
settings:
repo: testimage
registry: 9999.dkr.ecr.eu-west-3.amazonaws.com
region: eu-west-3
create_repository: true
debug: true
launch_debug: true
storage_path: /cache/${DRONE_REPO}/docker
storage_driver: overlay2
access_key:
from_secret: aws_access_key_id
secret_key:
from_secret: aws_secret_access_key
volumes:
- name: cache
path: /cache
depends_on:
- Prepare caches
volumes:
- name: cache
host:
path: /var/cache/drone
…and the error in the logs:
time="2022-02-08T15:47:22.569049336Z" level=error msg="failed to mount overlay: operation not permitted" storage-driver=overlay2
On my build server, the directories are created, but whatever the rights given at step prepare
the docker directory rights are reset at step ecr
:
drwx--x--- 7 root root 4096 Feb 8 15:51 /var/cache/drone/myrepo/citests/docker/
Docker tree is created in this directory:
drwx--x--x 3 root root 4096 Feb 8 15:51 containerd
drwx--x--- 2 root root 4096 Feb 8 15:51 containers
drwx------ 4 root root 4096 Feb 8 15:51 plugins
drwx------ 2 root root 4096 Feb 8 15:51 runtimes
drwx------ 2 root root 4096 Feb 8 15:51 tmp
But then, what is the problem when trying to create the overlay storage ?
Why does it work in the default /var/lib/docker directory, but not on a volume ?
I also tried to mount my volume in /var/lib/docker
(that was actually my first try), but it fails the same way.
I also tried to set a different storage_path
with no volume, but it fails also. I guess because the target directory does not exist.