├── Makefile ├── Dockerfile └── dind /Makefile: -------------------------------------------------------------------------------- 1 | 2 | build: 3 | docker build -t progrium/dind . 4 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM gliderlabs/alpine:3.2 2 | RUN apk-install iptables ca-certificates lxc e2fsprogs bash docker 3 | ADD ./dind /bin/dind 4 | VOLUME /var/lib/docker 5 | ENV DOCKER_OPTS -H unix:///var/run/docker.sock 6 | ENTRYPOINT ["/bin/dind"] 7 | -------------------------------------------------------------------------------- /dind: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | CGROUP=/sys/fs/cgroup 4 | mkdir -p $CGROUP 5 | if ! mountpoint -q $CGROUP; then 6 | mount -n -t tmpfs -o uid=0,gid=0,mode=0755 cgroup $CGROUP || { 7 | echo "Could not make a tmpfs mount. Did you use --privileged?" 8 | exit 1 9 | } 10 | fi 11 | 12 | if [[ -d /sys/kernel/security ]] && ! mountpoint -q /sys/kernel/security; then 13 | mount -t securityfs none /sys/kernel/security || { 14 | echo "Could not mount /sys/kernel/security." 15 | echo "AppArmor detection and --privileged mode might break." 16 | } 17 | fi 18 | 19 | for SUBSYS in $(cut -d: -f2 /proc/1/cgroup); do 20 | mkdir -p $CGROUP/$SUBSYS 21 | if ! mountpoint -q $CGROUP/$SUBSYS; then 22 | mount -n -t cgroup -o $SUBSYS cgroup $CGROUP/$SUBSYS 23 | fi 24 | 25 | echo $SUBSYS | grep -q ^name= && { 26 | NAME=$(echo $SUBSYS | sed s/^name=//) 27 | ln -s $SUBSYS $CGROUP/$NAME 28 | } 29 | 30 | [[ $SUBSYS = cpuacct,cpu ]] && ln -s $SUBSYS $CGROUP/cpu,cpuacct 31 | done 32 | 33 | grep -q :devices: /proc/1/cgroup || 34 | echo "WARNING: the 'devices' cgroup should be in its own hierarchy." 35 | grep -qw devices /proc/1/cgroup || 36 | echo "WARNING: it looks like the 'devices' cgroup is not mounted." 37 | 38 | pushd /proc/self/fd >/dev/null 39 | for FD in *; do 40 | case "$FD" in 41 | [012]) ;; 42 | *) eval exec "$FD>&-" ;; 43 | esac 44 | done 45 | popd >/dev/null 46 | 47 | rm -rf /var/run/docker.pid 48 | exec docker -d $DOCKER_OPTS $@ 49 | --------------------------------------------------------------------------------