Skip to content
This repository has been archived by the owner on Sep 16, 2024. It is now read-only.

BKM: Change Docker Data Location

xwu2 edited this page Aug 14, 2020 · 11 revisions

The docker engine by default stores the data (images and containers) under the /var/lib/docker directory. Usually this is a space-limited root partition. Use the following steps to change the docker data directory:

  • Create new docker data directory under /home:
sudo mkdir /home/docker
sudo chown root.docker /home/docker
sudo chmod 700 /home/docker
  • Modify /etc/docker/daemon.json to point to the new directory:
{
    "graph": "/home/docker"
}
  • Restart docker:
sudo systemctl stop docker
sudo systemctl start docker
  • Remove the old data directory:
sudo rm -rf /var/lib/docker
  • Change the Kubelet data folder

Add --root-dir=/home/kubelet to the kubelet options in /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf.

sudo mkdir /home/kubelet
sudo systemctl daemon-reload
sudo systemctl restart kubelet
  • To test if Kubernetes properly recognizes your new data folder, try the following script:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
     app: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      enableServiceLinks: false
      containers:
        - name: test
          image: busybox
          imagePullPolicy: IfNotPresent
          command: ["sh","-c","while true; do df -h /mnt; sleep 1; done"]
          volumeMounts:
            - mountPath: /mnt
              name: storage
      volumes:
        - name: storage
          emptyDir: {}