-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstart-docker.sh
More file actions
72 lines (57 loc) · 2.84 KB
/
Copy pathstart-docker.sh
File metadata and controls
72 lines (57 loc) · 2.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/system/bin/sh
#
# Docker on Android Startup Script (Hybrid Cgroup v1)
# Author: shitodcy
#
echo "Cleaning up previous mounts..."
killall dockerd 2>/dev/null
killall crun 2>/dev/null
sleep 1
# Repeatedly unmount to handle potential nested mounts
for i in 1 2 3; do
umount /data/alpine-docker/sys/fs/cgroup/blkio 2>/dev/null
umount /data/alpine-docker/sys/fs/cgroup/cpu 2>/dev/null
umount /data/alpine-docker/sys/fs/cgroup/cpuset 2>/dev/null
umount /data/alpine-docker/sys/fs/cgroup/memory 2>/dev/null
umount /data/alpine-docker/sys/fs/cgroup/cpuacct 2>/dev/null
umount /data/alpine-docker/sys/fs/cgroup/devices 2>/dev/null
umount /data/alpine-docker/sys/fs/cgroup/freezer 2>/dev/null
umount /data/alpine-docker/sys/fs/cgroup/pids 2>/dev/null
umount /data/alpine-docker/sys/fs/cgroup/systemd 2>/dev/null
umount /data/alpine-docker/sys/fs/cgroup 2>/dev/null
done
umount /data/alpine-docker/sys 2>/dev/null
umount /data/alpine-docker/proc 2>/dev/null
umount /data/alpine-docker/dev 2>/dev/null
umount /data/alpine-docker/run 2>/dev/null
umount /data/alpine-docker 2>/dev/null
echo "Setting up Alpine system..."
mount -o bind /data/alpine-docker /data/alpine-docker
mount -t proc proc /data/alpine-docker/proc
mount -t sysfs sys /data/alpine-docker/sys
mount -o bind /dev /data/alpine-docker/dev
mount -t tmpfs tmpfs /data/alpine-docker/run
echo "Creating a hybrid v1 cgroup structure..."
mount -t tmpfs tmpfs /data/alpine-docker/sys/fs/cgroup
# 1. Bind mount cgroup belonging to Android
mkdir -p /data/alpine-docker/sys/fs/cgroup/blkio
mount -o bind /dev/blkio /data/alpine-docker/sys/fs/cgroup/blkio
mkdir -p /data/alpine-docker/sys/fs/cgroup/cpu
mount -o bind /dev/cpuctl /data/alpine-docker/sys/fs/cgroup/cpu
mkdir -p /data/alpine-docker/sys/fs/cgroup/cpuset
mount -o bind /dev/cpuset /data/alpine-docker/sys/fs/cgroup/cpuset
mkdir -p /data/alpine-docker/sys/fs/cgroup/memory
mount -o bind /dev/memcg /data/alpine-docker/sys/fs/cgroup/memory
mkdir -p /data/alpine-docker/sys/fs/cgroup/cpuacct
mount -o bind /acct /data/alpine-docker/sys/fs/cgroup/cpuacct
# 2. Mount additional cgroups that are not yet on Android
mkdir -p /data/alpine-docker/sys/fs/cgroup/devices
mount -t cgroup -o devices cgroup /data/alpine-docker/sys/fs/cgroup/devices
mkdir -p /data/alpine-docker/sys/fs/cgroup/freezer
mount -t cgroup -o freezer cgroup /data/alpine-docker/sys/fs/cgroup/freezer
mkdir -p /data/alpine-docker/sys/fs/cgroup/pids
mount -t cgroup -o pids cgroup /data/alpine-docker/sys/fs/cgroup/pids
mkdir -p /data/alpine-docker/sys/fs/cgroup/systemd
mount -t cgroup -o none,name=systemd cgroup /data/alpine-docker/sys/fs/cgroup/systemd
echo "Starting Docker Daemon..."
chroot /data/alpine-docker /bin/sh -c "export PATH=/bin:/usr/bin:/sbin:/usr/sbin:\$PATH && dockerd --iptables=false --userland-proxy=false --default-runtime=crun --add-runtime crun=/usr/bin/crun -H unix:///run/docker.sock" &