紅米Note 5原生跑docker - Android

Daniel avatar
By Daniel
at 2021-12-30T22:55

Table of Contents

因為kernel緣故,就算有Termux也無法直接執行docker,所以興起了自行改kernel重新編譯
的想法。
https://i.imgur.com/d7Fee9i.png


網誌好讀版: https://reurl.cc/aklARX

刷kernel的小常識: Android刷kerenl不會刪除手機資料。不過為避免卡開機,最好用TWRP
先備份原廠的boot分區再操作。

手機: 紅米Note 5(whyred),已Root,系統為Lineage OS 18。

如果想試試,我把boot.img檔案放在Github上,LineageOS可直接刷:
https://reurl.cc/GokvZ3


一、檢查運作條件
手機開啟Termux,下載執行Moby的腳本
```
pkg install wget
wget https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh
chmod +x check-config.sh
sed -i '1s_.*_#!/data/data/com.termux/files/usr/bin/bash_' check-config.sh
sudo ./check-config.sh
```
看看目前手機的kernel缺少哪些功能,把紅字missing部分記錄下來。最主要是`General Ne
cessary`下的項目要全部開啟。
https://i.postimg.cc/jjtppyjd/screen.jpg


二、尋找kernel & 測試編譯
我的思路是這樣: 找一個穩定的第三方kernel專案,確認能順利在自己電腦編譯,刷到手機
也正常,再以此為基礎進行進入深入修改。

完整編譯&刷內核步驟:
https://bit.ly/3yWRh7Y


三、修改kernel
1. 在用機型defconfig建立.config之後,使用make menuconfig開啟kconfig介面,按照剛
剛手機顯示missing的項目,將其一一開啟。
https://i.postimg.cc/1RkwGvTV/screen4.jpg

2. 例如我要開啟CONFIG_OVERLAY_FS這個選項,就在menuconfig的介面按下「/」
https://i.postimg.cc/2yZjjFFP/scree2n.jpg

3. 輸入名稱搜尋,menuconfig會告訴你設定值的大約位置。
https://i.postimg.cc/c1gftpDN/screen3.jpg

4. 鍵盤上下鍵找到該選項,按下y啟用。

5 用鍵盤左右鍵,移動到Save,儲存設定值。移動到Exit按下Enter離開。

6.根據FreddieOliveira的說明,還要修改kernel專案目錄下的二個檔案: kernel/Makefil
e和net/netfilter/xt_qtaguid.c。

7. 重新編譯一次kernel。
```
make
```

8. 用AIK重新打包檔案,用TWRP刷到手機。

開機後會顯示「你的裝置發生內部問題」,屬於正常現象。

這支紅米Note 5開機後還要再使用以下指令才能正常掛載cgroup:
```
sudo mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
```


四、手機安裝docker

1. 用Moby的腳本再次確認kernel相容性都是綠色的之後,透過Termux的root repo下載dock
er。
```
pkg install root-repo && pkg install docker
```

2. Termux左邊滑出來可以開第二個終端機。先啟動docker daemon。
```
sudo dockerd --iptables=false
```

3. 另一個終端機啟動docker容器,例如Hello World:
```
sudo docker run hello-world
```

4. 測試Apache伺服器:
```
sudo docker run -d -p 80:80 --name myapache --net=host --dns=8.8.8.8 httpd
```

這樣docker算是正常執行了,一些關於網路的詳細設定請到【以下參考資料】查詢。
https://gist.github.com/FreddieOliveira/efe850df7ff3951cb62d74bd770dce27


有Termux ,Android沒什麼不可能的,現在docker不用虛擬機就可以近原生的效能執行了。

--
https://i.imgur.com/qBnCgUO.jpg
https://i.imgur.com/klpjZcQ.jpg
https://i.imgur.com/yLTmoHs.jpg
https://i.imgur.com/WepO17T.jpg

--
Tags: Android

All Comments

Ursula avatar
By Ursula
at 2022-01-02T13:30
請問這樣效能堪用嗎?比方說跑 jekyll
Michael avatar
By Michael
at 2022-01-05T04:04
手機裝apache2感覺很帥…
Jessica avatar
By Jessica
at 2022-01-07T18:38
謝謝

撥放雲端上的ISO影片檔 ?

Valerie avatar
By Valerie
at 2021-12-30T16:50
大家好 最近想用android電視盒或手機撥放google空間的ISO影片檔?想請問有適合方式或app嗎? 我用rs檔案文件瀏覽器,可直連雲端,可放mkv跟字幕。但ISO就沒辦法撥? 謝謝 - ...

google lens無法及時對焦

Edward Lewis avatar
By Edward Lewis
at 2021-12-30T01:21
我使用Pixel 6 pro 使用主頁面下方自帶的google lens 或Line掃碼等都無法及時對焦... 請問有人知道該怎麼修正嗎? 感謝 - ...

tether GPS還能用?

George avatar
By George
at 2021-12-29T16:07
我想把A手機GPS分享給其他裝置 google後知道tether GPS可做到 但是我找到的操作說明都是2012左右的 也有提到這app只能在android4.0環境work 我是有載到app 但是反復測試始終無法將GPS讓其他裝置抓到 是tether GPS無法現在環境work嗎? 現在還 ...

MeowPtt - Ptt鄉民神器來了(更新)

Tom avatar
By Tom
at 2021-12-28T23:06
軟體名稱:MeowPtt 軟體截圖:https://i.imgur.com/5dUl8vh.png 軟體分類:社交 軟體連結:https://play.google.com/store/apps/details?id=meow.ptt.cc 安裝方式:Google Play 適用版本:Android 7.0 ...

新手機經過調整後這樣的耗電正常嗎?

Edward Lewis avatar
By Edward Lewis
at 2021-12-28T11:42
買了紅米note 10 pro 4g 系統是android 11 miui 12.5.2 一開始手忙腳亂下載完成了一堆app 去搜尋原來miui 12 是耗電主因 不過系統也有指引可調整 調整完特意測約昨晚待機2200-今天0820 耗了11% 5020的電量耶 前三名耗電 分別是 ...