Anil Kumar H P
Anil Kumar H P

Reputation: 47

How can I save the kubernetes pod as a docker image?

I have a pod running Linux, I have let others use it. Now I need to save the changes made by others. Since sometimes I need to delete/restart the pod, the changes are reverted and new pod get created. So I want to save the pod container as docker image and use that image to create a pod.

I have tried kubectl debug node/pool-89899hhdyhd-bygy -it --image=ubuntu then install docker, dockerd inside but they don't have root permission to perform operations, installed crictl they where listing the containers but they don't have options to save them.

Also created a privileged docker image, created a pod from it, then used the command kubectl exec --stdin --tty app-7ff786bc77-d5dhg -- /bin/sh then tried to get running container, but it was not listing the containers. Below is the deployment i used to the privileged docker container

kind: Deployment
apiVersion: apps/v1
metadata:
  name: app
  labels:
    app: backend-app
    backend-app: app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: backend-app
      task: app
  template:
    metadata:
      labels:

        app: backend-app
        task: app
    spec:
      nodeSelector:
        kubernetes.io/hostname: pool-58i9au7bq-mgs6d
      volumes:
        - name: task-pv-storage
          hostPath:
            path: /run/docker.sock
            type: Socket
      containers:
        - name: app
          image: registry.digitalocean.com/my_registry/docker_app@sha256:b95016bd9653631277455466b2f60f5dc027f0963633881b5d9b9e2304c57098
          ports:
            - containerPort: 80
          volumeMounts:
            - name: task-pv-storage
              mountPath: /var/run/docker.sock

Is there any way I can achieve this, get the pod container and save it as a docker image? I am using digitalocean to run my kubernetes apps, I do not ssh access to the node.

Upvotes: 0

Views: 2474

Answers (2)

Anil Kumar H P
Anil Kumar H P

Reputation: 47

Thank you all for your help and suggestions. I found a way to achieve it using the tool nerdctl - https://github.com/containerd/nerdctl.

Upvotes: 0

coderanger
coderanger

Reputation: 54211

This is not a feature of Kubernetes or CRI. Docker does support snapshotting a running container to an image however Kubernetes no longer supports Docker.

Upvotes: 1

Related Questions