forked from DL-Mirrors/termux-docker
Add support for user static DNS file (#45)
Adds the file `/data/data/com.termux/files/home/.static-dns-hosts.txt` with empty content to bind to it externally with some user hosts. The script `update-static-dns` then uses the regular system wide static-dns-hosts.txt and the content of this file. The user can edit it inside the container, and/or bind it with an external file.
This commit is contained in:
@@ -66,6 +66,11 @@ RUN echo "echo -e 'Updating static DNS:\n' && /system/bin/update-static-dns && e
|
|||||||
busybox ln -s /system/bin/update-static-dns /data/data/com.termux/files/usr/bin/update-static-dns && \
|
busybox ln -s /system/bin/update-static-dns /data/data/com.termux/files/usr/bin/update-static-dns && \
|
||||||
busybox ln -s /system/etc/static-dns-hosts.txt /data/data/com.termux/files/usr/etc/static-dns-hosts.txt
|
busybox ln -s /system/etc/static-dns-hosts.txt /data/data/com.termux/files/usr/etc/static-dns-hosts.txt
|
||||||
|
|
||||||
|
# Create empty user static DNS cache (external bind)
|
||||||
|
RUN busybox mkdir -p /data/data/com.termux/files/home/.termux/termux-docker/ && \
|
||||||
|
busybox touch /data/data/com.termux/files/home/.termux/termux-docker/static-dns-hosts.txt && \
|
||||||
|
busybox chown 1000:1000 /data/data/com.termux/files/home/.termux/termux-docker/static-dns-hosts.txt
|
||||||
|
|
||||||
# Update static DNS cache, install updates and cleanup when not building for arm.
|
# Update static DNS cache, install updates and cleanup when not building for arm.
|
||||||
ENV PATH /data/data/com.termux/files/usr/bin
|
ENV PATH /data/data/com.termux/files/usr/bin
|
||||||
RUN if [ ${BOOTSTRAP_ARCH} == 'arm' ]; then exit; else \
|
RUN if [ ${BOOTSTRAP_ARCH} == 'arm' ]; then exit; else \
|
||||||
|
|||||||
@@ -43,8 +43,10 @@ There a number of known issues which may not be resolved:
|
|||||||
`personality()` system call.
|
`personality()` system call.
|
||||||
|
|
||||||
* DNS: Docker image has to use a static DNS resolver through `/system/etc/hosts`.
|
* DNS: Docker image has to use a static DNS resolver through `/system/etc/hosts`.
|
||||||
You can regenerate this file by editing `/system/etc/static-dns-hosts.txt` and
|
You can regenerate this file by editing `/system/etc/static-dns-hosts.txt` or
|
||||||
executing script `/system/bin/update-static-dns`.
|
`/data/data/com.termux/files/home/.termux/termux-docker/static-dns-hosts.txt` (aka
|
||||||
|
`~/.termux/termux-docker/static-dns-hosts.txt`) (this is preferable for docker binds)
|
||||||
|
and executing script `/system/bin/update-static-dns`.
|
||||||
|
|
||||||
* When running certain multi threaded program in 32bit containers, the PIDs can
|
* When running certain multi threaded program in 32bit containers, the PIDs can
|
||||||
balloon and easily exceed libc's limit. The only way to fix this is to set
|
balloon and easily exceed libc's limit. The only way to fix this is to set
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ echo "127.0.0.1 localhost $(busybox hostname)" > /system/etc/hosts
|
|||||||
echo "::1 ip6-localhost" >> /system/etc/hosts
|
echo "::1 ip6-localhost" >> /system/etc/hosts
|
||||||
|
|
||||||
# IPv4
|
# IPv4
|
||||||
for host in $(busybox cat /system/etc/static-dns-hosts.txt | busybox grep -vE '^\s*#'); do
|
for host in $(busybox cat /system/etc/static-dns-hosts.txt /data/data/com.termux/files/home/.termux/termux-docker/static-dns-hosts.txt | busybox grep -vE '^\s*#'); do
|
||||||
ip_addr=$(busybox nslookup -type=a "$host" 8.8.8.8 | busybox awk '/^Address: / { print $2 ; exit }')
|
ip_addr=$(busybox nslookup -type=a "$host" 8.8.8.8 | busybox awk '/^Address: / { print $2 ; exit }')
|
||||||
|
|
||||||
if [ -z "$ip_addr" ]; then
|
if [ -z "$ip_addr" ]; then
|
||||||
@@ -23,7 +23,7 @@ if [[ $? != 0 ]]; then
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
# IPv6
|
# IPv6
|
||||||
for host in $(busybox cat /system/etc/static-dns-hosts.txt | busybox grep -vE '^\s*#'); do
|
for host in $(busybox cat /system/etc/static-dns-hosts.txt /data/data/com.termux/files/home/.termux/termux-docker/static-dns-hosts.txt | busybox grep -vE '^\s*#'); do
|
||||||
ip_addr=$(busybox nslookup -type=aaaa "$host" 2001:4860:4860::8888 | busybox awk '/^Address: / { print $2 ; exit }')
|
ip_addr=$(busybox nslookup -type=aaaa "$host" 2001:4860:4860::8888 | busybox awk '/^Address: / { print $2 ; exit }')
|
||||||
|
|
||||||
if [ -z "$ip_addr" ]; then
|
if [ -z "$ip_addr" ]; then
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ echo "127.0.0.1 localhost $(busybox hostname)" > /system/etc/hosts
|
|||||||
echo "::1 ip6-localhost" >> /system/etc/hosts
|
echo "::1 ip6-localhost" >> /system/etc/hosts
|
||||||
|
|
||||||
# IPv4
|
# IPv4
|
||||||
for host in $(busybox cat /system/etc/static-dns-hosts.txt | busybox grep -vE '^\s*#'); do
|
for host in $(busybox cat /system/etc/static-dns-hosts.txt /data/data/com.termux/files/home/.termux/termux-docker/static-dns-hosts.txt | busybox grep -vE '^\s*#'); do
|
||||||
ip_addr=$(busybox nslookup -type=a "$host" 8.8.8.8 | busybox awk '/^Address: / { print $2 ; exit }')
|
ip_addr=$(busybox nslookup -type=a "$host" 8.8.8.8 | busybox awk '/^Address: / { print $2 ; exit }')
|
||||||
|
|
||||||
if [ -z "$ip_addr" ]; then
|
if [ -z "$ip_addr" ]; then
|
||||||
@@ -23,7 +23,7 @@ if [[ $? != 0 ]]; then
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
# IPv6
|
# IPv6
|
||||||
for host in $(busybox cat /system/etc/static-dns-hosts.txt | busybox grep -vE '^\s*#'); do
|
for host in $(busybox cat /system/etc/static-dns-hosts.txt /data/data/com.termux/files/home/.termux/termux-docker/static-dns-hosts.txt | busybox grep -vE '^\s*#'); do
|
||||||
ip_addr=$(busybox nslookup -type=aaaa "$host" 2001:4860:4860::8888 | busybox awk '/^Address: / { print $2 ; exit }')
|
ip_addr=$(busybox nslookup -type=aaaa "$host" 2001:4860:4860::8888 | busybox awk '/^Address: / { print $2 ; exit }')
|
||||||
|
|
||||||
if [ -z "$ip_addr" ]; then
|
if [ -z "$ip_addr" ]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user