重新安装到 ext4 分区 zvol 后,Docker 仍在使用 zfs 存储驱动程序

重新安装到 ext4 分区 zvol 后,Docker 仍在使用 zfs 存储驱动程序

免责声明:这篇文章已发布于Reddit但没有成功,而且由于我非常渴望重新启动并运行我的所有服务,所以我现在求助于您......

我在我的服务器(运行 Openmediavault)上安装了 docker,它位于一个名为的单独 zpool/dataset 上docker-apps/docker,但我真的不喜欢它为十几个图像创建了数百个遗留数据集。因此,我将其重新安装到一个名为的新创建的 ext4 zvol 中,并挂载到同一位置,即/docker-apps/docker/,但出于某种原因,Docker 仍然使用 zfs 存储驱动程序。

重新安装后,docker 似乎正在使用 overlay2,因为 docker 目录有 overlay2 文件夹,没有 zfs 文件夹。但是当我尝试启动 docker-compose 时,它​​在中途冻结了,所以我选择重新启动服务器,结果发现 overlay2 目录现在不见了,取而代之的是 zfs 目录。

此外,我通过 rsyncet(-aHAX)复制到新创建的目录中的一些文件和文件夹也消失了。最后你会发现我遵循的步骤。

当我逃跑时#df ./docker-apps/docker/得到:

Filesystem     1K-blocks  Used Available Use% Mounted on
/dev/zd0p1     117367920   224 117367696   1% /docker-apps/docker

当我跑步的时候#blkid /dev/zd0p1

/dev/zd0p1: UUID="32129cde-7529-4e91-a66e-e0d2d0945788" TYPE="ext4" PARTUUID="bf74c543-01"

但是当我跑步时#docker info我得到:

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 20.10.6
 Storage Driver: zfs
  Zpool: docker-apps
  Zpool Health: ONLINE
  Parent Dataset: docker-apps
  Space Used By Parent: 110736957440
  Space Available: 120184643584
  Parent Quota: no
  Compression: lz4
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: active
  NodeID: zo8ri6xuh2b83q8kqapjsykha
  Is Manager: true
  ClusterID: 8vjh79gtws9rusqorrusj2vhm
  Managers: 1
  Nodes: 1
  Default Address Pool: 10.0.0.0/8  
  SubnetSize: 24
  Data Path Port: 4789
  Orchestration:
   Task History Retention Limit: 5
  Raft:
   Snapshot Interval: 10000
   Number of Old Snapshots to Retain: 0
   Heartbeat Tick: 1
   Election Tick: 10
  Dispatcher:
   Heartbeat Period: 5 seconds
  CA Configuration:
   Expiry Duration: 3 months
   Force Rotate: 0
  Autolock Managers: false
  Root Rotation In Progress: false
  Node Address: 192.168.24.4
  Manager Addresses:
   192.168.24.4:2377
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc version: 12644e614e25b05da6fd08a38ffa0cfe1903fdec
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 5.4.106-1-pve
 Operating System: Debian GNU/Linux 10 (buster)
 OSType: linux
 Architecture: x86_64
 CPUs: 32
 Total Memory: 125.9GiB
 Name: homeserver.lan
 ID: ME3U:ZU7D:YFKZ:N5IG:TLRU:VRWK:CANV:LYQQ:3QEF:SBCA:PNCN:LOKS
 Docker Root Dir: /docker-apps/docker
 Debug Mode: false
 Username: <My Docker Hub User>
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

以下是(据我记得)我采取的具体步骤:

  1. 停止所有正在运行的容器,并将我的 docker-compose.yml、我的 secret-files 和所有 appdata 文件夹(映射卷)rsync(-aHAX)到备份目录
  2. #docker system prune -all
  3. 从 OVM GUI 停止并卸载 Docker
  4. #rm -R /docker-apps/docker
  5. #rm /etc/docker/daemon.json
  6. #zfs create -V 100gb docker-apps/docker
  7. #fdisk /dev/zd0#后面跟着类似这样的内容:n 输入 输入 输入 输入 w
  8. #mkfs.ext4 /dev/zd0p1
  9. #zfs set compression=lz4 docker-apps/docker
  10. #mkdir -p /docker-apps/docker
  11. #printf "UUID=%s /docker-apps/docker auto nodev,nofail 0 0" $(blkid | grep -oP "zd0p1: UUID=\K\"\S+\"") >> /etc/fstab
  12. #mount -a
  13. 将 docker 重新安装到 /docker-apps/docker (从 OVM GUI)
  14. #docker swarm init
  15. 将步骤 1 中的所有文件 rsynced(-aHAX)回至 /docker-apps/docker 目录
  16. 使用以下方式安装所有相关的docker网络#docker network create --attachable <name>
  17. #docker-compose up -d

我真的需要你的帮助,提前谢谢您!

相关内容