【Docker与Termux】闲置旧安卓手机上的NAS无缝部署方案

在这里插入图片描述最近有了新手机,旧手机也闲置了,由于之前一直在寻找平价的NAS替代方案,旧手机在抽屉躺了N天后,我决定让它重新焕发光彩,努力工作,继续拉磨。
这个时代的旧手机可以满足NAS的基本配置需求,内存、硬盘、内置电源、WIFI模块、快速接口,简直是理想中的NAS形态,但是散热、ROOT和性能是个短板,不过也不是大问题!
这里的方案也不需要ROOT!

网页端,这个是手机上用Docker部署好的个人网盘页面。
在这里插入图片描述手机端。
在这里插入图片描述容器运行
在这里插入图片描述

什么NAS?
可道云,这也不算是个正经的NAS系统,但是私有云存储&协同办公,又是PC端桌面的操作界面,电脑手机使用都蛮方便,也算是能达到我个人的使用需求。
平时主要存存工具软件,存放我那越来越难以安置的知识库。
地址:https://kodcloud.com/

一般来说在手机上使用Linux系统都是基于termux APP版linux,但是Docker仍然不能在termux版linux里运行,需要Termux上装Qemu虚拟机,然后再在Qemu里装alpine linux,这种套娃式的操作蛮费事,对于没有耐心的盆友来说是一个噩梦般的操作过程,所幸的是有人把Termux+Qemu虚拟机+Alpine Linux整合好了,名为alpine term,极大简化了部署流程,下载Alpine-termux这个APP安装就能用,不过这个安装就能用也只是一个相对的概念,对于我们使用Docker部署应用来说还是有一段路需要走,有一些坑需要踩。

下面正式进入旧手机改造流程,祝我们成功,为了我们的折腾精神。🍻

  • 准备工作:
    小风扇、旧手机,电源线、有网络的WIFI、一台电脑、VMware虚拟机、Shell终端软件

1、下载Alpine-termux APP

Alpine-termux APP概念:
Alpine-termux是APP,Alpine系统是Alpine-termux APP中的一个虚拟机,你可以将Alpine-termux理解为VMware或者Hyper-V或其它虚拟机软件,而Alpine是在虚拟机里运行的Linux系统。

GitHub项目页
https://github.com/FakeRajbhx/alpine-term
APP大概500多M,直接使用GitHub文件提速下载以下APK:https://gh.api.99988866.xyz/
https://github.com/FakeRajbhx/alpine-term/releases/download/New/alpine-term-v16.0-release.apk

2、初始化和登录

下载安装后初始化开机,开机后,登录系统,用户:alpine 密码: alpine
切换到root账户,输入sudo -s
密码为 alpine ,接着修改root密码, 输入 passwd ,需要输入两次密码。

root登录后会显示

C:\Users\admin>ssh root@172.16.12.21 -p 8022
The authenticity of host '[172.16.12.21]:8022 ([172.16.12.21]:8022)' can't be established.
ECDSA key fingerprint is SHA256:T7ViBHC8k6XKW4kY/jor/CRLynwZnv5QF88sMmfTreA.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[172.16.12.21]:8022' (ECDSA) to the list of known hosts.
root@172.16.12.21's password:

############################################################

Welcome to the Alpine Linux!

This operating system uses a package manager called 'apk'.
Here is a quick guide how to use it:

  apk add {
   pkg name}   - install package
  apk del {
   pkg name}   - uninstall package
  apk info             - list installed packages
  apk info {
   pkg name}  - show information about package
  apk search {
   query}   - search for package
  apk update           - update package lists
  apk upgrade          - upgrade installed packages
  apk audit            - show file system changes

Check file '/home/alpine/README' for details about the
current setup of the operating system.

See <https://wiki.alpinelinux.org> for the information
about administrating Alpine systems.

############################################################

Things to do on the first login:

 1. Change password.
 2. Set timezone by executing 'sudo setup-timezone'.
 3. Change this message by editing /etc/motd.
 4. Change login banner by editing /etc/issue.
 5. Check for package updates.

############################################################

root@alpine-term ~ #

3、ssh和root配置

下面的sed命令是在手机端操作的,毕竟此时无法通过电脑终端连接Alpine-termux,如果觉得在手机上一个字母一个字母输入麻烦,就直接vi /etc/ssh/sshd_config配置文件,将PasswordAuthentication和PermitRootLogin的no改成yes,这速度比一个一个输入快多了!

问题:为什么不把命令复制在手机上再在手机命令行里粘贴?
因为Alpine-termux的手机端似乎对长文本的输入支持不友好,比如博主在将以下命令复制粘贴在手机端命令行后,是现实不完整的,即使强行回车,也会报错,所以还是直接在配置文件将no改为yes是最省事的!

系统默认是禁止ssh密码登录的,所以需要先开启它,输入:

sed -i ‘s/PasswordAuthentication no/PasswordAuthentication yes/g’ /etc/ssh/sshd_config  

如果还需要开机root用户登录的话,输入

sed -i ‘s/PermitRootLogin no/PermitRootLogin yes/g’ /etc/ssh/sshd_config

然后重启启动sshd服务,输入

service sshd restart  

重启完成就配置好了。

4、alpine到termux的端口映射

映射ssh的22端口(方便电脑操作,只想手机操作就忽略这个步骤)
因为是Qemu套娃,所以需要映射ssh的22端口,开机完成后,手指在软件的左上方向右滑,会出现菜单,
如下所示:

[1]QEMU

[2]/dev/ttyS0
Waiting for login on /dev/ttyS0...

[3]/dev/ttyS1
Waiting for login on /dev/ttyS1...

[4]/dev/ttyS2
Waiting for login on /dev/ttyS2...

[5]/dev/ttyS3
Waiting for login on /dev/ttyS3...

选择 [2]/dev/ttyS0
输入:

ssh root@127.0.0.1 -p 22

映射ssh的22端口到手机的8022端口,选择 [1]QEMU,
输入

hostfwd_add tcp::8022-:22

【注意事项1】这个映射端口的命令每次重启Alpine Term 都需要重新设置一次,建议常驻后台。
执行上面的指令后就可以远程ssh手机的8022端口。这样当手机和电脑处于同一局域网的时候我们就能在电脑上通过FinalShell远程登录手机的Termux模拟终端了。
在电脑上操作终端复制命令比较方便。

【注意事项2】如果你中途出门去公司或其它公共场合,连接了其它wifi,只要没主动关闭Alpine Term APP后台,可以直接在wifi设置里查看新的IP,使用新IP+8022访问模拟终端。

5、网络配置

在alpine中,使用vi编辑器:

vi /etc/network/interfaces

添加如下配置
这里使用dhcp自动获取IP,Alpine虚拟机在这种套娃式的情境下没必要设置固定IP。

auto lo  
iface lo inet loopback  
auto eth0  
iface eth0 inet dhcp

保存后重启网络

/etc/init.d/networking restart

配置DNS地址

vi /etc/resolv.conf

添加如下配置

nameserver 8.8.8.8
nameserver 8.8.4.4

resolv.conf修改后没有重启操作,直接就生效了!

这样alpine就能访问互联网了,如果还是没网,就重启APP重新配置!

6、配置APK源

查看系统版本

cat /etc/alpine-release
3.13.12

方案一、使用阿里镜像 https://mirrors.aliyun.com

sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

方案二、使用科大镜像 http://mirrors.ustc.edu.cn

sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

在上面方案中找到对应系统版本的源版本,这里使用科大的镜像源

http://mirrors.ustc.edu.cn/alpine/v3.13/

找到的源写入以下文件

vi /etc/apk/repositories

在文件中修改以下信息
顺便将最下面的testing注释掉,因为源里没有testing这个目录,不注释掉会导致报错

# Main package repositories.
http://mirrors.ustc.edu.cn/alpine/v3.13/main
http://mirrors.ustc.edu.cn/alpine/v3.13/community

# Testing repository.
# You can install packages from this repository with:
# apk add package@testing
#@testing http://mirrors.ustc.edu.cn/alpine/v3.13/testing

或者也可以使用sed替换

sed -i 's/文本/文本/g' /etc/apk/repositories

更新仓库

apk update

升级软件包,后面加–force-broken-world跳过一些问题

apk upgrade --available --force-broken-world

7、重新进入系统

启动alpine-term APP后等待系统加载完成。
系统加载完成后登录alpine-term使用alpine账号登录:

alpine/alpine

进入alpine系统后,使用root用户登录系统:

root/xxxxx

之后在alpine系统命令行输入:

ssh root@127.0.0.1 -p 22

然后手指在软件的左上方向右滑,进行端口映射,选择 [1]QEMU输入:

hostfwd_add tcp::8022-:22

之后就可以在电脑端使用alpine-term IP加上8022远程访问alpine系统了。

8、安装docker

安装docker

sudo apk add docker

使docker开机启动

sudo rc-update add docker  

开启docker服务

sudo service docker start  

后台启动

sudo setsid containerd  
sudo setsid dockerd

docker启动报错

"failed to mount overlay: no such device storage-driver=overlay2" 

上面的错误表明在尝试挂载 Overlay2 存储驱动时出现了问题
添加以下文件及信息

vi /etc/docker/daemon.json
{
   "storage-driver"="devicemapper"}

测试

docker info
docker ps

测试成功的信息

root@alpine-term ~ # docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

root@alpine-term ~ # docker info
Client:
 Context:    default
 Debug Mode: false

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 20.10.3
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 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: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 7eba5930496d9bbe375fdf71603e610ad737d2b2
 runc version: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
 init version:
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 5.10.152-0-virt
 Operating System: Alpine Linux v3.13
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 2.321GiB
 Name: alpine-term
 ID: BYOE:XMQL:NQVM:E2ZZ:RRXQ:HWB4:YB2B:5KNY:R24L:HMLF:REPA:XYZB
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: No blkio weight support
WARNING: No blkio weight_device support

DOCKER 安装完成!

9、安装docker compose

curl可能会因为alpine系统网络问题无法下载

curl -SL https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

这里直接去PC浏览器下载,然后再通过终端上传到alpine系统
https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64
下载完成后将其上传到目录/usr/local/bin/
修改docker-compose-linux-x86_64为docker-compose

mv docker-compose-linux-x86_64 docker-compose

修改docker-compose权限

chmod 777 docker-compose

查看docker-compose版本

docker-compose -v
Docker Compose version v2.23.3

10、部署个人网盘

前言:

因为Alpine-termux APP和手机本身的限制,有时候拉取镜像会因为网络的问题直接失败。

root@alpine-term /mnt/shared/h1d/kodbox # docker-compose up -d 
[+] Running 0/39 
⠋ db 8 layers [⠀⠀⠀⠀⠀⠀⠀⠀] 0B/0B Pulling 27.9s 
⠧ d4c3c94e5e10 Waiting 13.6s
error pulling image configuration: Get "https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/d7/d7a7b84914e9e8f30bd2d3a4114a65dcc076982658d77dce2471f7a8680556ab/data?verify=1715396819-pzw5%2BKmSVyKpEVAUKLWXjUiz93M%3D": net/http: TLS handshake timeout

所以这里我放弃了在Alpine-termux APP虚拟机里直接拉取镜像。

我在电脑端起了一台centos7虚拟机,在centos7中执行docker-compose pull镜像。

1、vmware PC环境(容器部署与迁移)

1.在centos7中安装docker
安装并启动docker服务, 新版本docker会自动安装docker-compose-plugin

 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
 systemctl enable docker && systemctl start docker

docker compose 用法, 在通过docker compose up启动后, 可以使用docker compose ls查看配置文件位置

docker compose ls

提示:
docker compose命令不存在,可手动安装二进制文件docker-compose并在后续命令中替换。

curl -SL https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

2.http方式快速启动
注意:
首先创建一个目录作为项目目录,后面所有命令都在这个目录下执行

mkdir /kodbox && cd /kodbox

需在db.env中设置数据库密码,还有yml中的MYSQL_ROOT_PASSWORD需补充.
创建文件来设置数据库环境变量vim db.env

MYSQL_PASSWORD=test@123
MYSQL_DATABASE=kodbox
MYSQL_USER=kodbox

创建docker-compose.yml 文件

 vim docker-compose.yml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/623405.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

程序员学CFA——经济学

经济学 需求和供给分析消费者需求分析需求的相关概念需求需求定律需求函数需求曲线消费者剩余 需求弹性需求的自身价格弹性需求的交叉价格弹性需求的收入弹性 替代效应与收入效应替代效应收入效应替代效应和收入效应的综合作用 需求定律的例外 生产商供给分析供给分析的基本概念…

计算机发展史故事【14】

大象踢踏舞 如果要把电脑50 年的历史划分为两个不同的阶段&#xff0c;那么&#xff0c;1981 年无疑是个分界线。就在那一年&#xff0c;IBM 公司推出个人电脑PC 机&#xff0c;使人类社会大步跨进个人电脑新时代。今天&#xff0c;全世界正在使用的PC 机已达到2 亿台&#xf…

python爬虫(五)之新出行汽车爬虫

python爬虫&#xff08;五&#xff09;之新出行汽车爬虫 接完最后一单&#xff0c;终于肝完了最后一个python爬虫——新出行爬虫&#xff0c;将https://www.xchuxing.com网站上所有的汽车爬虫全部抓取下来。 import requests import json import csv from lxml import etree …

【HarmonyOS】综合应用-《校园通》

概念 本文结合之前的笔记文章知识点&#xff0c;做一个综合性的小应用。 创建一个ArkTS语言的鸿蒙项目&#xff0c;搭建首页面 其界面代码如下&#xff0c;该界面使用了垂直布局&#xff0c;相对布局&#xff0c;轮播布局&#xff0c;以及图片&#xff0c;文本等组件的综合运…

ubuntu22.04服务器docker-compose方式部署ldap服务

一&#xff1a;系统版本 二&#xff1a;部署环境 节点名称 IP 部署组件及版本 配置文件路径 机器CPU 机器内存 机器存储 Ldap 10.10.10.111 self-service-password:latest phpldapadmin:latest openldap:latest openldap:/data/openldap/config phpldapadmin&#x…

初识C++ · string的使用(1)

目录 1 STL简介 2 string类 2.1 构造 析构 拷贝 2.2 size length 2.3 [ ]的使用 2.4 迭代器 2.5 Push_Back和append 3 sort的使用 1 STL简介 STL是一个标准库&#xff0c;是C标准库的一个重要部分&#xff0c;那么什么是STL&#xff1f;STL是一个模板库&#xff0c;包…

Sass终极指南:从基础到高级,打造高效、可维护的CSS代码!

在现代网页开发中&#xff0c;CSS预处理器已经成为提高样式表维护性和可扩展性的重要工具。Sass&#xff08;Syntactically Awesome Style Sheets&#xff09;是其中最受欢迎的预处理器之一。本文将全面详细地介绍Sass&#xff0c;包括其基本介绍、主要作用、使用方法及注意事项…

2024年NOC大赛创客智慧(西瓜创客)Python复赛编程真题模拟试卷包含答案

NOC复赛python模拟题 1.编写一个程序&#xff0c;提示用户输人一个矩形的长度和宽度&#xff0c;并输出其面积, 2.试计算在区间 1 到 n的所有整数中,数字x(0≤x≤9)共出现了多少次?例如在 1到11 中&#xff0c;即在 1,2,3.45,6.7,8.9,10,11 中&#xff0c;数字 1出现了 4 次.…

工程师工具箱系列(3)Arthas

文章目录 工程师工具箱系列&#xff08;3&#xff09;Arthas安装与准备Arthas插件使用场景查看某个变量值ognl方式调用Bean方法tt(TimeTunel)方式调用Bean的方法ognl调用带参数方法 资源总览 工程师工具箱系列&#xff08;3&#xff09;Arthas Java诊断利器 安装与准备 window…

大厂常见算法50题-两数相加

专栏持续更新50道算法题&#xff0c;都是大厂高频算法题&#xff0c;建议关注, 一起巧‘背’算法! 文章目录 题目解法总结 题目 解法 定义一个节点pre&#xff0c;用于初始化结果链表的头部&#xff0c;cur指向pre&#xff0c;它将在遍历过程中用于构建新的链表。初始化进位变…

微服务部署不迷茫:4大部署模式深度解析,轻松驾驭云原生时代

微服务部署最全详解(4种常见部署模式) 微服务多实例部署 每个微服务都独立部署在自己的运行环境中&#xff0c;这是微服务架构的核心思想。 一般会采用每个主机多个服务实例&#xff0c;如下所示&#xff1a; 这是一种传统的应用部署方法&#xff0c;每个服务实例在一个或多个…

腐烂的橘子BFS

题目&#xff1a; 腐烂的橘子 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b; 值 1 代表新鲜橘子&#xff1b; 值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子…

FMEA再什么情况下应用——SunFMEA软件

FMEA作为一种系统性的方法&#xff0c;旨在识别和评估潜在的故障模式、其可能的影响以及相应的预防措施&#xff0c;因此&#xff0c;它的适用场景广泛且多样。今天SunFMEA软件系统和大家一起探讨什么情况下应用FMEA&#xff1f; 首先&#xff0c;在产品设计阶段&#xff0c;F…

对比分析汽车灯罩材料使用聚碳酸酯(PC)和PMMA(亚克力)的优缺点,汽车车灯的灯罩如果破损破裂破洞了要怎么修复?

对比分析汽车灯罩材料使用聚碳酸酯&#xff08;PC&#xff09;和PMMA&#xff08;亚克力&#xff09;的优缺点&#xff0c;并给出建议。 要求&#xff1a; 1. 对比分析两种材料的性能、成本、耐用性、安全性等方面的差异。 2. 给出针对不同应用场景&#xff08;如夜间照明…

通过GRE隧道实现OSPF、BGP、IS-IS的套接使用

正文共&#xff1a;999 字 9 图&#xff0c;预估阅读时间&#xff1a;1 分钟 书接上文&#xff08;专线入云场景能否配置动态路由协议&#xff1f;&#xff09;&#xff0c;我们发现通过一定的配置&#xff0c;具体就是组合使用IBGP和静态路由&#xff0c;在使用云专线接入到资…

应用层(上篇)

应用层 应用层协议原理 网络应用程序体系解构 应用程序体系结构: 由应用程序研发者设计规定了如何在各种端系统上组织该应用程序。在选择应用程序体系结构时&#xff0c;应用程序研发者很可能利用现代网络应用程序中所使用的两种主流体系结构之一:客户-服务器体系结构或对等…

快解析Tplink端口映射如何设置

Tplink作为国内知名路由器品牌&#xff0c;有着广泛的用户群体。使用快解析端口映射是实现内网服务器被外网访问必须要做的设置&#xff0c;很多对网络不懂得小白不知道该到哪里去做&#xff0c;下面我就讲解一下tplink路由器如何做端口映射。 1&#xff1a;访问路由器 &#…

Co-Driver:基于 VLM 的自动驾驶助手,具有类人行为并能理解复杂的道路场景

24年5月来自俄罗斯莫斯科研究机构的论文“Co-driver: VLM-based Autonomous Driving Assistant with Human-like Behavior and Understanding for Complex Road Scenes”。 关于基于大语言模型的自动驾驶解决方案的最新研究&#xff0c;显示了规划和控制领域的前景。 然而&…

通过钉钉卡片进行工单审批

我们通常通过钉钉机器人来发送通知&#xff0c;提醒审批人名下有待办工单需要处理。这种通知方式仅能提醒审批人到ITSM中处理&#xff0c;审批人需要打开电脑登陆平台处理&#xff0c;我们就考虑是否能有一种方式能够满足移动端审批&#xff1f; 这里我们可以使用ITSM的移动端版…

使用Flask部署Web应用:从入门到精通

文章目录 第一部分&#xff1a;准备工作第二部分&#xff1a;部署Flask应用到AWS部署到AWS Lambda 第三部分&#xff1a;部署Flask应用到腾讯云服务器部署到腾讯云服务器 第四部分&#xff1a;优化和扩展结论 在现代软件开发中&#xff0c;Web应用的部署是一个至关重要的环节。…