diff options
author | Eric Hameleers <alien@slackware.com> | 2022-01-06 19:45:13 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2022-01-06 19:45:13 +0000 |
commit | cc49762a72bcd0207e874786a368a7f6d9fcc6c8 (patch) | |
tree | 4bb8873ec9a15ec079f774d9828ae64f08774c35 /docker | |
parent | 5a26f96c655c917d526558b999d4ac83572de2ae (diff) | |
download | asb-cc49762a72bcd0207e874786a368a7f6d9fcc6c8.tar.gz asb-cc49762a72bcd0207e874786a368a7f6d9fcc6c8.tar.xz |
Initial revision
Diffstat (limited to 'docker')
-rw-r--r-- | docker/build/README.Slackware | 9 | ||||
-rw-r--r-- | docker/build/config/docker.default | 3 | ||||
-rw-r--r-- | docker/build/config/docker.logrotate | 9 | ||||
-rw-r--r-- | docker/build/config/rc.docker | 86 | ||||
-rw-r--r-- | docker/build/doinst.sh | 67 |
5 files changed, 174 insertions, 0 deletions
diff --git a/docker/build/README.Slackware b/docker/build/README.Slackware new file mode 100644 index 00000000..1bdf9d33 --- /dev/null +++ b/docker/build/README.Slackware @@ -0,0 +1,9 @@ +Slackware notes +=============== +Docker daemon starts and runs as root. +To use the Docker command-line interface (the 'docker' program) +as a non-root user, you must add yourself to the 'docker' group: + # gpasswd -a <your_username> docker +... and then restart the Docker daemon: + # /etc/rc.d/rc.docker restart +You will have to logoff and login again if you added yourself to the group. diff --git a/docker/build/config/docker.default b/docker/build/config/docker.default new file mode 100644 index 00000000..d12ad2a4 --- /dev/null +++ b/docker/build/config/docker.default @@ -0,0 +1,3 @@ +## Set defaults used by the docker daemon. +## These are flags passed after `dockerd`. +DOCKER_OPTS="" diff --git a/docker/build/config/docker.logrotate b/docker/build/config/docker.logrotate new file mode 100644 index 00000000..016980dd --- /dev/null +++ b/docker/build/config/docker.logrotate @@ -0,0 +1,9 @@ +/var/log/docker.log { + daily + rotate 7 + copytruncate + delaycompress + compress + notifempty + missingok +} diff --git a/docker/build/config/rc.docker b/docker/build/config/rc.docker new file mode 100644 index 00000000..5aee99f0 --- /dev/null +++ b/docker/build/config/rc.docker @@ -0,0 +1,86 @@ +#!/bin/sh +# +# Docker startup script for Slackware Linux +# +# Docker is an open-source project to easily create lightweight, portable, +# self-sufficient containers from any application. + +PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin + +BASE=dockerd + +UNSHARE=/usr/bin/unshare +DOCKER=/usr/bin/${BASE} +DOCKER_PIDFILE=/var/run/${BASE}.pid +DOCKER_LOG=/var/log/docker.log +DOCKER_OPTS="" + +# Default options. +if [ -f /etc/default/docker ]; then + . /etc/default/docker +fi + +# Check if docker is present. +if [ ! -x ${DOCKER} ]; then + echo "${DOCKER} not present or not executable" + exit 1 +fi + +docker_start() { + echo "Starting ${BASE} ..." + # If there is an old PID file (no dockerd running), clean it up. + if [ -r ${DOCKER_PIDFILE} ]; then + if ! ps axc | grep ${BASE} 1> /dev/null 2> /dev/null ; then + echo "Cleaning up old ${DOCKER_PIDFILE}." + rm -f ${DOCKER_PIDFILE} + fi + fi + + nohup "${UNSHARE}" -m -- ${DOCKER} -p ${DOCKER_PIDFILE} ${DOCKER_OPTS} >> ${DOCKER_LOG} 2>&1 & +} + +docker_stop() { + echo -n "Stopping ${BASE} ..." + if [ -r ${DOCKER_PIDFILE} ]; then + DOCKER_PID=$(cat ${DOCKER_PIDFILE}) + kill ${DOCKER_PID} + while [ -d /proc/${DOCKER_PID} ]; do + sleep 1 + echo -n "." + done + fi + echo " done" +} + +docker_restart() { + docker_stop + sleep 1 + docker_start +} + +docker_status() { + if [ -f ${DOCKER_PIDFILE} ] && ps -o cmd $(cat ${DOCKER_PIDFILE}) | grep -q ${BASE} ; then + echo "Status of ${BASE}: running" + else + echo "Status of ${BASE}: stopped" + fi +} + +case "$1" in + 'start') + docker_start + ;; + 'stop') + docker_stop + ;; + 'restart') + docker_restart + ;; + 'status') + docker_status + ;; + *) + echo "Usage: $0 {start|stop|restart|status}" +esac + +exit 0 diff --git a/docker/build/doinst.sh b/docker/build/doinst.sh new file mode 100644 index 00000000..bb188878 --- /dev/null +++ b/docker/build/doinst.sh @@ -0,0 +1,67 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then + # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +preserve_perms() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + if [ -e $OLD ]; then + cp -a $OLD ${NEW}.incoming + cat $NEW > ${NEW}.incoming + mv ${NEW}.incoming $NEW + fi + config $NEW +} + +preserve_perms etc/rc.d/rc.docker.new +config etc/default/docker.new +config etc/logrotate.d/docker.new + +# Reload udev rules, we just added one with this package: +if [ -x /sbin/udevadm ]; then + /sbin/udevadm control --reload-rules +fi + +# Group 'docker' (grpId=281) is also used by SBo. +DOCKER_GID=${DOCKER_GID:-281} + +# Only way to create and use the correct uid and gid on the target system, +# is to use chroot: +chroot . <<EOR 2>/dev/null +# Add the '${DOCKER_GID}' group if it doesn't exist already: +/usr/sbin/groupadd -g ${DOCKER_GID} docker 2> /dev/null +EOR + +# Update rc.local so that docker daemon will be started on boot: +if ! grep "rc.docker" etc/rc.d/rc.local 1>/dev/null 2>&1 ; then + cat <<_EOM_ >> etc/rc.d/rc.local + +if [ -x /etc/rc.d/rc.docker ]; then + # Start Docker daemon: + echo "Starting Docker daemon: /etc/rc.d/rc.docker start" + /etc/rc.d/rc.docker start +fi +_EOM_ +fi + +# Update rc.local_shutdown so that docker daemon will be stopped: +if ! grep "rc.docker" etc/rc.d/rc.local_shutdown 1>/dev/null 2>&1 ; then + cat <<_EOM2_ >> etc/rc.d/rc.local_shutdown + +if [ -x /etc/rc.d/rc.docker ]; then + # Stop Docker daemon: + echo "Stopping Docker daemon: /etc/rc.d/rc.docker stop" + /etc/rc.d/rc.docker stop +fi +_EOM2_ +fi + |