https://www.pld-linux.org/packages/docker
Signed-off-by: Elan Ruusamäe <glen@pld-linux.org>
| 1 | 1 |
new file mode 100755 |
| ... | ... |
@@ -0,0 +1,73 @@ |
| 0 |
+#!/bin/sh |
|
| 1 |
+# |
|
| 2 |
+# Generate a minimal filesystem for PLD Linux and load it into the local docker as "pld". |
|
| 3 |
+# https://www.pld-linux.org/packages/docker |
|
| 4 |
+# |
|
| 5 |
+set -e |
|
| 6 |
+ |
|
| 7 |
+if [ "$(id -u)" != "0" ]; then |
|
| 8 |
+ echo >&2 "$0: requires root" |
|
| 9 |
+ exit 1 |
|
| 10 |
+fi |
|
| 11 |
+ |
|
| 12 |
+image_name=pld |
|
| 13 |
+ |
|
| 14 |
+tmpdir=$(mktemp -d ${TMPDIR:-/var/tmp}/pld-docker-XXXXXX)
|
|
| 15 |
+root=$tmpdir/rootfs |
|
| 16 |
+install -d -m 755 $root |
|
| 17 |
+ |
|
| 18 |
+# to clean up: |
|
| 19 |
+docker rmi $image_name || : |
|
| 20 |
+ |
|
| 21 |
+# build |
|
| 22 |
+rpm -r $root --initdb |
|
| 23 |
+ |
|
| 24 |
+set +e |
|
| 25 |
+install -d $root/dev/pts |
|
| 26 |
+mknod $root/dev/random c 1 8 -m 644 |
|
| 27 |
+mknod $root/dev/urandom c 1 9 -m 644 |
|
| 28 |
+mknod $root/dev/full c 1 7 -m 666 |
|
| 29 |
+mknod $root/dev/null c 1 3 -m 666 |
|
| 30 |
+mknod $root/dev/zero c 1 5 -m 666 |
|
| 31 |
+mknod $root/dev/console c 5 1 -m 660 |
|
| 32 |
+set -e |
|
| 33 |
+ |
|
| 34 |
+poldek -r $root --up --noask -u \ |
|
| 35 |
+ --noignore \ |
|
| 36 |
+ -O 'rpmdef=_install_langs C' \ |
|
| 37 |
+ -O 'rpmdef=_excludedocs 1' \ |
|
| 38 |
+ vserver-packages \ |
|
| 39 |
+ bash iproute2 coreutils grep poldek |
|
| 40 |
+ |
|
| 41 |
+# fix netsharedpath, so containers would be able to install when some paths are mounted |
|
| 42 |
+sed -i -e 's;^#%_netsharedpath.*;%_netsharedpath /dev/shm:/sys:/proc:/dev:/etc/hostname;' $root/etc/rpm/macros |
|
| 43 |
+ |
|
| 44 |
+# no need for alternatives |
|
| 45 |
+poldek-config -c $root/etc/poldek/poldek.conf ignore systemd-init |
|
| 46 |
+ |
|
| 47 |
+# this makes initscripts to believe network is up |
|
| 48 |
+touch $root/var/lock/subsys/network |
|
| 49 |
+ |
|
| 50 |
+# cleanup large optional packages |
|
| 51 |
+remove_packages="ca-certificates" |
|
| 52 |
+for pkg in $remove_packages; do |
|
| 53 |
+ rpm -r $root -q $pkg && rpm -r $root -e $pkg --nodeps |
|
| 54 |
+done |
|
| 55 |
+ |
|
| 56 |
+# cleanup more |
|
| 57 |
+rm -v $root/etc/ld.so.cache |
|
| 58 |
+rm -rfv $root/var/cache/hrmib/* |
|
| 59 |
+rm -rfv $root/usr/share/man/man?/* |
|
| 60 |
+rm -rfv $root/usr/share/locale/*/ |
|
| 61 |
+rm -rfv $root/usr/share/help/*/ |
|
| 62 |
+rm -rfv $root/usr/share/doc/* |
|
| 63 |
+rm -rfv $root/usr/src/examples/* |
|
| 64 |
+rm -rfv $root/usr/share/pixmaps/* |
|
| 65 |
+ |
|
| 66 |
+# and import |
|
| 67 |
+tar --numeric-owner --xattrs --acls -C $root -c . | docker import - $image_name |
|
| 68 |
+ |
|
| 69 |
+# and test |
|
| 70 |
+docker run -i -u root $image_name /bin/echo Success. |
|
| 71 |
+ |
|
| 72 |
+rm -r $tmpdir |