This post illustrates how you can mount a GCS bucket using GCSFuse on your host machine and expose it as a volume to a Docker container.
PROBLEM
You want to volume mount a FUSE-mounted directory to a container, for example:
When attempting to run the container…
docker run -it --rm -v /my-kfc-bucket:/home busybox
… an error occurred:
docker: Error response from daemon: error while creating
mount source path '/my-kfc-bucket': mkdir /my-kfc-bucket:
file exists.
SOLUTION
Unmount the existing FUSE-mounted directory.
sudo umount /my-kfc-bucket
Mount it back with the following option. Because this command with -o allow_other must be executed with sudo privilege, you will need to change the root ownership to yourself (via –uid and –gid) so that you can easily read/write within the directory.
sudo gcsfuse \
-o allow_other \
--uid $(id -u) \
--gid $(id -g) \
gcs-bucket /my-kfc-bucket
If it is successful, the output should look like this:
Start gcsfuse/0.40.0 (Go version go1.17.6) for app "" using mount point: /my-kfc-bucket
Opening GCS connection...
Mounting file system "gcs-bucket"...
File system has been successfully mounted.
Rerun the docker container.
docker run -it --rm -v /my-kfc-bucket:/home busybox
Now, you can read/write the GCS bucket’s data from the container. In this example, the GCS bucket’s data is located in /home.
Leave a Reply