0

Can I create multiple empty dir volume and copy the content in it. Deployment has started failing after adding securityContext as:

securityContext: readOnlyRootFilesystem: true

Due to read only volume, deployment fails with the error: OSError: [Errno 30] Read-only file system: '

Ambuj Kumar
  • 71
  • 1
  • 6
  • Why do you want to copy files between two directories? And are you expecting to copy files automatically? – hiroyukik Sep 20 '22 at 23:02

1 Answers1

0

As per your issue Nginx must be provided access to the paths which were shown in the error.

In order to prevent these errors we need to pass tmpfs arguments.

Tmpfs can be used to rectify the error: OSError: [Errno 30] Read-only file system: ' permission issue. Tmpfs theoretically works as the regular volume, which allows us to mount storage from outside the container however it’s not persistent in nature. It mounts an area of the host memory to the specified location in the container. Deploy the container by passing tmpfs arguments

Example:

<docker run -d -p 8080:80 --read-only --tmpfs:/var/cache/nginx --tmpfs:/var/run nginx:alphine>

Now if you check the logs you will be able to find the deployment is successful.

If you are trying to deploy the containers using Kubernetes we use ephemeral storage for this purpose. When we use emptyDir as volume, Kubernetes will attach a local folder from the underlying worker-node, which lives as long as the pod. Please follow this official documentation for more information on ephemeral storages in Kubernetes. Please follow the below yaml file example for configuring emptyDir in Kubernetes.

apiVersion: v1
kind: Pod
metadata:
  name: webserver
  labels:
    name: webserver
spec:
  containers:
    - name: webserver
    image: nginx:alpine
    securityContext:
        readOnlyRootFilesystem: true
    ports:
        - containerPort: 80
    volumeMounts:
        - mountPath: /var/run
        name: tmpfs-1
        - mountPath: /var/cache/nginx
        name: tmpfs-2
  volumes:
    - name: tmpfs-1
    emptyDir: {}
#   - name: tmpfs-ram
#   emptyDir:
#       medium: "Memory"
    - name: tmpfs-2
    emptyDir: {}
Sai Chandra Gadde
  • 2,242
  • 1
  • 3
  • 15