- Added OnlyOffice compose example
- Added support for copy from image
- Multi-stage supports target in compose
- Added udocker compose [--dry] [--build-only]
- now supports .env loading
- I've successfully ran cal.com with some patches
- Explanations in calcom_tutorial.md
- Added inspect -c
- Added udocker compose [--force-recreate]
- experimental for now, only supports simple files
- udocker run / compose by udocker_wrapper.sh
- Termux install/uninstall script
- multi-stage Dockerfile for udocker build
- Added udocker build
- specifically for openclaw/Dockerfile
- 這個專案讓你能在沒有root權限的安卓手機
- 跑類似以下功能
- docker run
- docker build
- docker compose
- .
- 這個
js-udocker是基於python寫的那個原版 - udocker 1.3.17 的原始碼重寫的JavaScript版本。
- 但原版沒有build和compose的功能
- .
- 此專案的程式碼 大部分由 GPT Codex 產生。
- udocker_wrapper.sh lib/: build.mjs compose.mjs 主要是我寫的
- .
- 這邊有我的APP連結,可以在終端機直接使用udocker
- 但也能在Termux安裝(較少測試)
- sh termux_install.sh
以下指令均以專案根目錄執行:
bun udocker.js pull ubuntu:latest
bun udocker.js pull --pull=always ubuntu:latest
bun udocker.js pull --pull=never ubuntu:latest
bun udocker.js pull --quiet ubuntu:latest
bun udocker.js create --name=myubuntu ubuntu:latest
bun udocker.js import rootfs.tar myimage:latest
bun udocker.js export -o rootfs.tar <container-id|name>
bun udocker.js save -o image.tar myimage:latest
bun udocker.js load -i image.tar
bun udocker.js inspect [-c|-p] myimage:latest
bun udocker.js verify myimage:latest
bun udocker.js manifest inspect myimage:latest
bun udocker.js ps [RegExp]
bun udocker.js rm <container-id|name> [name2] [name3]
bun udocker.js rmi <repo/image:tag>
bun udocker.js rename <old-name> <new-name>
bun udocker.js images
bun udocker.js help
bun udocker.js build -t <container_name> [-y | -i] [-f file] [--build-arg KEY=VAL] .
sh udocker_wrapper.sh run [--proot] [--bypass-registry] [-p port:port] [-v volume] [-w workdir] [--rm] [--name=<name>] [--entrypoint=<file>] [--isolated] <container/image name>
sh udocker_wrapper.sh compose [-f compose_file] [-y | -i]
[--dry] [--build-only] [--repl] [--json] [--force-recreate]
sh udocker_wrapper.sh search <keyword>
sh udocker_wrapper.sh dir <shell_cmd>run --bypass-registry 會略過 registry/pull,直接使用本地已有的 image metadata 與 layers;cache 不完整時建立會失敗。
pull [--pull=missing|always|never] [--platform=os/arch[/variant]] [--registry=URL] [--index=URL] [-q|--quiet] <repo/image:tag>:下載 image layers 與 metadataimport <tar> <repo/image:tag>:匯入 tar(docker export)為 imageimport - <repo/image:tag>:從 stdin 匯入 tar(docker export)export -o <tar> <container>:匯出 container 檔案樹到檔案export - <container>:匯出 container 檔案樹到 stdoutload -i <exported-image>:載入 docker save 檔案load:從 stdin 載入 docker save 檔案save -o <imagefile> <repo/image:tag>:輸出 docker save 檔案inspect [-p] <repo/image:tag|container>:顯示 metadata 或 container ROOT 路徑inspect -c <repo/image:tag|container>:顯示 metadata 的config部分verify <repo/image:tag>:驗證 imagemanifest inspect <repo/image:tag>:顯示 manifestcreate [--name=NAME] <repo/image:tag>:由 image 建立 containerbuild -t <name> [-y | -i] <context>:從Dockerfile建立單層容器,-y是同意建立容器的所有過程,-i會每次詢問(預設值)compose [-f 檔名] [-y | -i]:一次建立許多容器並且跑起來,-y是同意建立容器的所有過程,-i會每次詢問(預設值)ps:列出 containerrm <container-id|name>:刪除 containerrmi <repo/image:tag>:刪除 imagerename <old-name> <new-name>:變更 container 名稱
- Run on non-rooted Android devices
- the docker-like functions below:
- docker run
- docker build
- docker compose
- .
- This
js-udockeris a JavaScript rewrite of the original python version udocker 1.3.17 (based on its code) - but the original version lacks build/compose
- Original version url:
- https://github.com/indigo-dc/udocker
- .
- Most of the code in this project is generated by GPT Codex .
- udocker_wrapper.sh lib/: build.mjs compose.mjs is mainly written by me
- .
- Here is the link to my App, with direct access to udocker in the Terminal applet:
- You can also install in Termux(less tested)
- sh termux_install.sh
Run the following from the project root:
bun udocker.js pull ubuntu:latest
bun udocker.js pull --pull=always ubuntu:latest
bun udocker.js pull --pull=never ubuntu:latest
bun udocker.js pull --quiet ubuntu:latest
bun udocker.js create --name=myubuntu ubuntu:latest
bun udocker.js import rootfs.tar myimage:latest
bun udocker.js export -o rootfs.tar <container-id|name>
bun udocker.js save -o image.tar myimage:latest
bun udocker.js load -i image.tar
bun udocker.js inspect [-c|-p] myimage:latest
bun udocker.js verify myimage:latest
bun udocker.js manifest inspect myimage:latest
bun udocker.js ps [RegExp]
bun udocker.js rm <container-id|name> [name2] [name3]
bun udocker.js rmi <repo/image:tag>
bun udocker.js rename <old-name> <new-name>
bun udocker.js images
bun udocker.js help
bun udocker.js build -t <container_name> [-y | -i] [-f file] [--build-arg KEY=VAL] .
sh udocker_wrapper.sh run [--proot] [--bypass-registry] [-p port:port] [-v volume] [-w workdir] [--rm] [--name=<name>] [--entrypoint=<file>] [--isolated] <container/image name>
sh udocker_wrapper.sh compose [-f compose_file] [-y | -i]
[--dry] [--build-only] [--repl] [--json] [--force-recreate]
sh udocker_wrapper.sh search <keyword>
sh udocker_wrapper.sh dir <shell_cmd>run --bypass-registry skips registry/pull access and uses existing local image metadata and layers; creation fails if the cache is incomplete.
pull [--pull=missing|always|never] [--platform=os/arch[/variant]] [--registry=URL] [--index=URL] [-q|--quiet] <repo/image:tag>: download image layers and metadataimport <tar> <repo/image:tag>: import tar (docker export) to imageimport - <repo/image:tag>: import tar from stdin (docker export)export -o <tar> <container>: export container directory tree to fileexport - <container>: export container directory tree to stdoutload -i <exported-image>: load image from file (docker save)load: load image from stdin (docker save)save -o <imagefile> <repo/image:tag>: save image with layers to fileinspect [-p] <repo/image:tag|container>: print metadata or container ROOT pathinspect [-c] <repo/image:tag|container>: print metadata's config partverify <repo/image:tag>: verify imagemanifest inspect <repo/image:tag>: print manifest metadatacreate [--name=NAME] <repo/image:tag>: create a container from an imagebuild -t <name> [-y | -i] <context>: create single-layered container from Dockerfile, -y will agree with all the building process while -i prompts every time interactively(default)compose [-f file] [-y | -i]: Create several containers at a time and run them, -y will agree with all the building process while -i prompts every time interactively(default)ps: list containersrm <container-id|name>: delete a containerrmi <repo/image:tag>: delete an imagerename <old-name> <new-name>: rename a container alias