Correctly configures Udocker so that it works properly in Termux.
Update - Thanks to @IntinteDAO, udocker is now officially available in the Termux APT Repo. I've updated the configs to use it.
It's a user-space implementation of Docker.
This means that it can, without root or custom-kernel, run Docker images and containers.
And it does this without spinning up an entire qemu-VM, which makes it much, much faster than any other alternatives.
https://f-droid.org/en/packages/com.termux/
https://github.com/indigo-dc/udocker
In Termux -
pkg i git -y && git clone --depth 1 https://github.com/George-Seven/Termux-Udocker ~/Termux-Udocker; git -C ~/Termux-Udocker pull; bash ~/Termux-Udocker/install_udocker.sh
And done.
udocker --help
cd ~/Termux-Udocker; git pull
Here are example scripts provided for some popular Docker images -
Note
Popular Docker repos provide 64-bit images, but not all of them provide the older 32-bit images.
Running uname -m
, if it shows 64, then your phone is 64-bit. Which means it'll work for everything given below.
You can still check if the repo supports 32-bit by checking the tag link next to the name.
Name: Stirling PDF (frooodle/s-pdf:latest)
~/Termux-Udocker/s-pdf.sh
Connect to it at - http://localhost:8080
Name: Home-Assistant (homeassistant/home-assistant:latest)
~/Termux-Udocker/home-assistant.sh
Connect to it at - http://localhost:8123
Name: Jupyter (quay.io/jupyter/base-notebook:latest)
~/Termux-Udocker/jupyter.sh
Connect to it at - http://localhost:8888
Name: Nextcloud (nextcloud:latest)
~/Termux-Udocker/nextcloud.sh
Connect to it at - http://localhost:2080
Name: ownCloud (owncloud/server:latest)
~/Termux-Udocker/owncloud.sh
Connect to it at - http://localhost:2081
Name: Calibre-Web (lscr.io/linuxserver/calibre:latest)
~/Termux-Udocker/calibre-web.sh
Connect to it at - http://localhost:8031
Note
Default Calibre-Web -
username: admin
password: admin123
Name: HTTPD (httpd:latest)
~/Termux-Udocker/httpd.sh
Connect to it at - http://localhost:2082
Name: Redis (redis:latest)
~/Termux-Udocker/redis.sh
Connect to it at - http://localhost:6379
Name: Jellyfin (jellyfin/jellyfin:latest)
~/Termux-Udocker/jellyfin.sh
Connect to it at - http://localhost:8096
Name: Puter (ghcr.io/heyputer/puter:latest)
~/Termux-Udocker/puter.sh
Connect to it at - http://puter.localhost:4100
ROS - Robot Operating System (ghcr.io/sloretz/ros:jazzy-ros-base)
~/Termux-Udocker/ros.sh
PORT=9080 ~/Termux-Udocker/s-pdf.sh
Add PORT=number
before the script. Port must be from 1024~65535.
To override the default startup commands, append your own commands after the script, like this -
~/Termux-Udocker/s-pdf.sh 'echo hello world; echo hi'
udocker ps
udocker rm "container_name"
udocker images
udocker rmi "image_name"