123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- description "Docker daemon"
- start on (filesystem and net-device-up IFACE!=lo)
- stop on runlevel [!2345]
- limit nofile 524288 1048576
- # Having non-zero limits causes performance problems due to accounting overhead
- # in the kernel. We recommend using cgroups to do container-local accounting.
- limit nproc unlimited unlimited
- respawn
- kill timeout 20
- pre-start script
- # see also https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount
- if grep -v '^#' /etc/fstab | grep -q cgroup \
- || [ ! -e /proc/cgroups ] \
- || [ ! -d /sys/fs/cgroup ]; then
- exit 0
- fi
- if ! mountpoint -q /sys/fs/cgroup; then
- mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
- fi
- (
- cd /sys/fs/cgroup
- for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
- mkdir -p $sys
- if ! mountpoint -q $sys; then
- if ! mount -n -t cgroup -o $sys cgroup $sys; then
- rmdir $sys || true
- fi
- fi
- done
- )
- end script
- script
- # modify these in /etc/default/$UPSTART_JOB (/etc/default/docker)
- DOCKERD=/usr/bin/dockerd
- DOCKER_OPTS=
- if [ -f /etc/default/$UPSTART_JOB ]; then
- . /etc/default/$UPSTART_JOB
- fi
- exec "$DOCKERD" $DOCKER_OPTS --raw-logs
- end script
- # Don't emit "started" event until docker.sock is ready.
- # See https://github.com/docker/docker/issues/6647
- post-start script
- DOCKER_OPTS=
- DOCKER_SOCKET=
- if [ -f /etc/default/$UPSTART_JOB ]; then
- . /etc/default/$UPSTART_JOB
- fi
- if ! printf "%s" "$DOCKER_OPTS" | grep -qE -e '-H|--host'; then
- DOCKER_SOCKET=/var/run/docker.sock
- else
- DOCKER_SOCKET=$(printf "%s" "$DOCKER_OPTS" | grep -oP -e '(-H|--host)\W*unix://\K(\S+)' | sed 1q)
- fi
- if [ -n "$DOCKER_SOCKET" ]; then
- while ! [ -e "$DOCKER_SOCKET" ]; do
- initctl status $UPSTART_JOB | grep -qE "(stop|respawn)/" && exit 1
- echo "Waiting for $DOCKER_SOCKET"
- sleep 0.1
- done
- echo "$DOCKER_SOCKET is up"
- fi
- end script
|