diff --git a/docker/do_docker.sh b/docker/do_docker.sh new file mode 100644 index 0000000..7cd4dca --- /dev/null +++ b/docker/do_docker.sh @@ -0,0 +1,130 @@ +#!/bin/sh +red(){ + echo -e "\033[31m\033[01m$1\033[0m" +} +green(){ + echo -e "\033[32m\033[01m$1\033[0m" +} +yellow(){ + echo -e "\033[33m\033[01m$1\033[0m" +} +blue(){ + echo -e "\033[34m\033[01m$1\033[0m" +} + +# 找到挂载在 /tmp/mountd 下的 U 盘设备 +MOUNT_BASE="/tmp/mountd" +AUTOMOUNT_POINT=$(find $MOUNT_BASE -mindepth 1 -maxdepth 1 -type d | head -n 1) +if [ -z "$AUTOMOUNT_POINT" ]; then + red "没有找到 U 盘的挂载点。请重新插拔U盘再试试" + exit 1 +fi + +# 使用 df 来找到设备文件,这假设挂载点的路径不含空格 +DEVICE=$(df | grep "$AUTOMOUNT_POINT" | awk '{ print $1 }') +if [ -z "$DEVICE" ]; then + yellow "无法找到 U 盘。" + exit 1 +fi + +# 此处设备路径已经找到,可以继续执行格式化和挂载等操作 +yellow "找到 U 盘设备:$DEVICE,挂载在:$AUTOMOUNT_POINT" + +# 卸载自动挂载的 U 盘 +umount $AUTOMOUNT_POINT + +# 检查并格式化 U 盘为 ext4 +FORMAT_DISK=$DEVICE +MOUNT_POINT="/mnt/upan_data" +DOCKER_ROOT="$MOUNT_POINT/docker" + +echo "格式化 $FORMAT_DISK 为 ext4 ..." +yellow "如果您确定要格式化U盘,请输入 y 来确认" +if mkfs.ext4 $FORMAT_DISK; then + echo "U盘格式化成功。" +else + red "U盘格式化失败,请确保刚才输入y确认。再次尝试需要重新插拔一次U盘" + exit 1 +fi + +yellow "为Docker Root 创建挂载点..." +mkdir -p $DOCKER_ROOT + +echo "将挂载 U 盘到 $DOCKER_ROOT..." +mount $FORMAT_DISK $MOUNT_POINT + +green "正在创建 Docker 配置文件 /etc/docker/daemon.json" +mkdir -p /etc/docker +echo '{ + "bridge": "docker0", + "storage-driver": "overlay2", + "data-root": "'$DOCKER_ROOT'" +}' > /etc/docker/daemon.json + +# 安装 Docker 和 dockerd +green "正在安装 Docker..." +opkg update +opkg install luci-app-dockerman +opkg install luci-i18n-dockerman-zh-cn +opkg install dockerd --force-depends >/dev/null 2>&1 + +# 创建并配置启动脚本 +green "设置 Docker 跟随系统启动" +cat << 'EOF' > /etc/init.d/docker +#!/bin/sh /etc/rc.common + +START=99 +USE_PROCD=1 +PROG="/usr/bin/dockerd" + +start_service() { + procd_open_instance + procd_set_param command $PROG --config-file /etc/docker/daemon.json + procd_set_param stdout 1 + procd_set_param stderr 1 + procd_close_instance +} + +stop_service() { + killall dockerd +} + +restart() { + stop + start +} +EOF + +# 使启动脚本可执行并启用自启动 +chmod +x /etc/init.d/docker +/etc/init.d/docker enable +/etc/init.d/docker start + +green "设置开机挂载U盘后 再启动Docker" +# 首先,备份 /etc/rc.local +cp /etc/rc.local /etc/rc.local.backup + +# 删除原有的 exit 0 +sed -i '/exit 0/d' /etc/rc.local + +# 将新的命令添加到 /etc/rc.local,然后再加上 exit 0 +{ + echo "umount $AUTOMOUNT_POINT || true" + echo "mount $FORMAT_DISK $MOUNT_POINT || true" + echo "/etc/init.d/docker start || true" + echo "exit 0" +} >> /etc/rc.local + +cat /etc/rc.local + +# 修改 /etc/config/dockerd 文件中的 data_root 配置 +sed -i "/option data_root/c\ option data_root '/mnt/upan_data/docker/'" /etc/config/dockerd + +yellow "Docker 部署完毕,请重启路由器来使更改生效。现在重启吗?(y/n)" +read -r answer +if [ "$answer" = "y" ] || [ -z "$answer" ]; then + yellow "正在重启路由器..." + reboot +else + echo "更改将在下次重启后生效。建议立刻重启" +fi diff --git a/gl-inet.sh b/gl-inet.sh index 7876a50..e729356 100755 --- a/gl-inet.sh +++ b/gl-inet.sh @@ -340,6 +340,7 @@ update_luci_app_quickstart() { is-opkg update is-opkg install luci-i18n-quickstart-zh-cn --force-depends >/dev/null 2>&1 yellow "恭喜您!现在你的路由器已经变成iStoreOS风格啦!" + green "如果没有首页和网络向导,可以执行第8项 更新luci_app_quickstart" else red "请先执行第一项 一键iStoreOS风格化" fi @@ -405,19 +406,21 @@ while true; do echo "*******GL-iNet MT-6000 " echo "**********************************************************************" echo - blue " 1. $result" + yellow " 1. $result" echo echo " 2. 设置自定义软件源" echo " 3. 删除自定义软件源" echo echo " 4. 设置风扇开始工作的温度(仅限MT3000)" - echo " 5. (慎用)恢复原厂OPKG配置软件包(需要网络环境支持)" + echo " 5. 恢复原厂OPKG配置软件包" echo echo " 6. 安装GL原厂Adguardhome(10MB)" echo " 7. 安装luci-app-wireguard" echo " 8. 更新luci-app-quickstart" echo " 9. 安装Argon紫色主题" echo "10. 安装文件管理器" + echo "11. 安装Docker(开发中)" + echo "12. 安装Docker Compose(开发中)" echo echo " Q. 退出本程序" echo @@ -476,6 +479,12 @@ while true; do 10) do_install_filemanager ;; + 11) + yellow "开发中......" + ;; + 12) + yellow "开发中......" + ;; q | Q) echo "退出" exit 0