免责声明:这篇文章已发布于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
以下是(据我记得)我采取的具体步骤:
- 停止所有正在运行的容器,并将我的 docker-compose.yml、我的 secret-files 和所有 appdata 文件夹(映射卷)rsync(-aHAX)到备份目录
- #
docker system prune -all
- 从 OVM GUI 停止并卸载 Docker
#rm -R /docker-apps/docker
#rm /etc/docker/daemon.json
#zfs create -V 100gb docker-apps/docker
#fdisk /dev/zd0
#后面跟着类似这样的内容:n 输入 输入 输入 输入 w#mkfs.ext4 /dev/zd0p1
#zfs set compression=lz4 docker-apps/docker
#mkdir -p /docker-apps/docker
#printf "UUID=%s /docker-apps/docker auto nodev,nofail 0 0" $(blkid | grep -oP "zd0p1: UUID=\K\"\S+\"") >> /etc/fstab
#mount -a
- 将 docker 重新安装到 /docker-apps/docker (从 OVM GUI)
#docker swarm init
- 将步骤 1 中的所有文件 rsynced(-aHAX)回至 /docker-apps/docker 目录
- 使用以下方式安装所有相关的docker网络
#docker network create --attachable <name>
#docker-compose up -d
我真的需要你的帮助,提前谢谢您!