更改Docker的数据目录

日常记录篇

确认非k8s创建的容器

docker inspect `docker ps -qa` -f '{{.Name}}' | grep -v '/k8s_'
  • 通过k8s创建的容器前缀都有带 k8s_ 的字眼。
  • 如果 docker 或 docker-compose 创建的有该名称开头的,请自行辨别。
  • 停止掉相关的容器

驱逐pod

$ kubectl drain k8s-node01 --ignore-daemonsets
node/k8s-node01 cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-mon/node-exporter-gvt8d, kube-system/calico-node-xvwfp
evicting pod kube-mon/prometheus-c698f5d8d-74fw4
evicting pod kube-mon/grafana-65949b6955-csxrp
pod/grafana-65949b6955-csxrp evicted
pod/prometheus-c698f5d8d-74fw4 evicted
node/k8s-node01 evicted

停服务

$ systemctl stop docker kubelet

迁移docker目录的数据

$ mv -fv /app/docker/data/ /data/docker/data

修改docker配置文件

sed -ri 's@(    "data-root":).*@\1 "/data/docker/data"@g' /data/docker/conf/daemon.json

cat /data/docker/conf/daemon.json
{
    "data-root": "/data/docker/data"
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": [
        "https://1nj0zren.mirror.aliyuncs.com",
        "https://docker.mirrors.ustc.edu.cn",
        "http://f1361db2.m.daocloud.io",
        "https://registry.docker-cn.com"
    ]
}
  • 默认的daemon.json,在 /etc/docker 目录下。
  • 修改的字段是 data-rootgraph 字眼

启动服务

$ systemctl start docker.service kubelet.service

启动原来非k8s的启动的容器

取消驱逐

$ kubectl uncordon k8s-node01
node/k8s-node01 uncordoned

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!