vim /data/data/com.termux/files/usr/etc/docker/daemon.json { "data-root": "/data/docker/lib/docker", "exec-root": "/data/docker/run/docker", "pidfile": "/data/docker/run/docker.pid", "hosts": [ "unix:///data/docker/run/docker.sock" ], "storage-driver": "overlay2", "group": "0" }
cat << "EOF" > $PREFIX/etc/containerd/config.toml version = 2 root = "/data/docker/var/lib/containerd" state = "/data/docker/run/containerd" imports = ["$PREFIX/etc/containerd/runtime_*.toml"] [grpc] address = "/data/docker/run/containerd/containerd.sock" [debug] address = "/data/docker/run/containerd/debug.sock" [plugins] [plugins."io.containerd.internal.v1.opt"] path = "/data/docker/opt" [plugins."io.containerd.grpc.v1.cri".cni] bin_dir = "/data/docker/opt/cni/bin" conf_dir = "/data/docker/etc/cni/net.d" EOF
mkdir -p /data/docker/etc/cni/net.d
cat <<EOF > /data/docker/etc/cni/net.d/99-loopback.conf { "cniVersion": "0.4.0", "name": "loopback", "type": "loopback" } EOF
|
####################################################################
sudo umount /data/docker sudo losetup -D rm -rf /data/docker /data/docker.img mkdir /data/docker sudo ln -sf /data/docker/run/docker.sock /data/data/com.termux/files/usr/var/run/docker.sock truncate -s 180G /data/docker.img mkfs.ext4 /data/docker.img
|
####################################################################
cat d.sh
pkill -9 dockerd pkill -9 containerd pkill -9 containerd-shim sleep 1 sudo umount -l /data/docker 2>/dev/null for loop in $(sudo losetup -j /data/docker.img | cut -d : -f 1); do sudo losetup -d "$loop" done sudo setenforce 0 2>/dev/null echo "正在检查磁盘健康..." sudo e2fsck -p /data/docker.img 2>/dev/null if [ $? -ne 0 ]; then echo "⚠️ 发现磁盘错误,正在尝试强力修复..." sudo e2fsck -y /data/docker.img fi DEVICE=$(sudo losetup -f --show /data/docker.img) sudo mount -t ext4 -o rw,noatime "$DEVICE" /data/docker sudo rm -rf /data/docker/run/docker/containerd/daemon/io.containerd.runtime.v2.task/moby/* sudo rm -rf /data/docker/run/docker/runtime-runc/moby/* sudo rm -f /data/docker/run/docker.pid sudo umount -l /sys/fs/cgroup/cpuctl 2>/dev/null sudo umount -l /sys/fs/cgroup/devices 2>/dev/null sudo mkdir -p /sys/fs/cgroup/cpuctl sudo mount -t cgroup -o cpu cgroup /sys/fs/cgroup/cpuctl sudo mkdir -p /sys/fs/cgroup/devices sudo mount -t cgroup -o devices cgroup /sys/fs/cgroup/devices sudo sysctl -w net.ipv4.ip_forward=1 > /dev/null IFACE=$(ip route get 8.8.8.8 | grep -oP 'dev \K\S+') TABLE=$IFACE if [ -z "$IFACE" ]; then echo "警告: 未检测到可用网络出口,请检查手机网络连接。" else echo "检测到出口网卡: $IFACE,正在应用补丁..." fi sudo ip rule del pref 1 2>/dev/null sudo ip rule del pref 2 2>/dev/null sudo ip rule add from all to 172.17.0.0/16 lookup main pref 1 sudo ip rule add from 172.17.0.0/16 lookup $TABLE pref 2 2>/dev/null || \ sudo ip rule add from 172.17.0.0/16 lookup main pref 2 sudo iptables -t nat -D POSTROUTING -s 172.17.0.0/16 -j MASQUERADE 2>/dev/null sudo iptables -t mangle -D FORWARD -s 172.17.0.0/16 -j MARK --set-mark 0x10064 2>/dev/null sudo iptables -D FORWARD -j ACCEPT 2>/dev/null sudo iptables -t nat -A POSTROUTING -s 172.17.0.0/16 -j MASQUERADE sudo iptables -t mangle -A FORWARD -s 172.17.0.0/16 -j MARK --set-mark 0x10064 sudo iptables -A FORWARD -j ACCEPT echo "联网补丁已针对 $IFACE 优化完成。" sudo dockerd
|
####################################################################
####################################################################
sudo docker stop $(sudo docker ps -q)
sudo pkill dockerd
sudo umount /data/docker_storage sudo losetup -D
|
####################################################################
#!/bin/bash echo "正在停止 Docker 容器..." sudo docker stop $(sudo docker ps -q) 2>/dev/null
echo "正在关闭 Docker 守护进程..." sudo pkill dockerd sleep 3
echo "正在卸载文件系统..." sudo umount -l /data/docker 2>/dev/null
echo "正在释放 loop 设备..." sudo losetup -D
echo "✅ Docker 已安全关闭,镜像文件已受保护。"
|
####################################################################