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

Time:12-20

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.

CodePudding user response:

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.

CodePudding user response:

You can't do it with Kubernetes or any other special command.

Refer this document for more information

However, you can still save a container's state as a new image by using the docker commit command on the node:

In the detailed pod information, obtain the container's ID and the node where it is running: $POD is described by kubectl. Node values and the Container ID are required.

Call and connect to a node you obtained in a previous step: docker commit saved-image:1 with the $CONTAINER_ID

  • Related