mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
640d2ef6f5
This change will allow the Docker daemon's init script to wait up to 5 minutes before being forcibly terminated by the initscript. Many non-trivial containers will take more than the default 3 seconds to stop, which can result in containers whose rootfs is still mounted and will not restart when the daemon starts up again, or worse, orphan processes that are still running. Signed-off-by: Steven Merrill <steven.merrill@gmail.com>
130 lines
2.3 KiB
Bash
Executable file
130 lines
2.3 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# /etc/rc.d/init.d/docker
|
|
#
|
|
# Daemon for docker.com
|
|
#
|
|
# chkconfig: 2345 95 95
|
|
# description: Daemon for docker.com
|
|
|
|
### BEGIN INIT INFO
|
|
# Provides: docker
|
|
# Required-Start: $network cgconfig
|
|
# Required-Stop:
|
|
# Should-Start:
|
|
# Should-Stop:
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Short-Description: start and stop docker
|
|
# Description: Daemon for docker.com
|
|
### END INIT INFO
|
|
|
|
# Source function library.
|
|
. /etc/rc.d/init.d/functions
|
|
|
|
prog="docker"
|
|
exec="/usr/bin/$prog"
|
|
pidfile="/var/run/$prog.pid"
|
|
lockfile="/var/lock/subsys/$prog"
|
|
logfile="/var/log/$prog"
|
|
|
|
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
|
|
|
|
prestart() {
|
|
service cgconfig status > /dev/null
|
|
|
|
if [[ $? != 0 ]]; then
|
|
service cgconfig start
|
|
fi
|
|
|
|
}
|
|
|
|
start() {
|
|
[ -x $exec ] || exit 5
|
|
|
|
if ! [ -f $pidfile ]; then
|
|
prestart
|
|
printf "Starting $prog:\t"
|
|
echo "\n$(date)\n" >> $logfile
|
|
$exec -d $other_args &>> $logfile &
|
|
pid=$!
|
|
touch $lockfile
|
|
# wait up to 10 seconds for the pidfile to exist. see
|
|
# https://github.com/docker/docker/issues/5359
|
|
tries=0
|
|
while [ ! -f $pidfile -a $tries -lt 10 ]; do
|
|
sleep 1
|
|
tries=$((tries + 1))
|
|
done
|
|
success
|
|
echo
|
|
else
|
|
failure
|
|
echo
|
|
printf "$pidfile still exists...\n"
|
|
exit 7
|
|
fi
|
|
}
|
|
|
|
stop() {
|
|
echo -n $"Stopping $prog: "
|
|
killproc -p $pidfile -d 300 $prog
|
|
retval=$?
|
|
echo
|
|
[ $retval -eq 0 ] && rm -f $lockfile
|
|
return $retval
|
|
}
|
|
|
|
restart() {
|
|
stop
|
|
start
|
|
}
|
|
|
|
reload() {
|
|
restart
|
|
}
|
|
|
|
force_reload() {
|
|
restart
|
|
}
|
|
|
|
rh_status() {
|
|
status -p $pidfile $prog
|
|
}
|
|
|
|
rh_status_q() {
|
|
rh_status >/dev/null 2>&1
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
rh_status_q && exit 0
|
|
$1
|
|
;;
|
|
stop)
|
|
rh_status_q || exit 0
|
|
$1
|
|
;;
|
|
restart)
|
|
$1
|
|
;;
|
|
reload)
|
|
rh_status_q || exit 7
|
|
$1
|
|
;;
|
|
force-reload)
|
|
force_reload
|
|
;;
|
|
status)
|
|
rh_status
|
|
;;
|
|
condrestart|try-restart)
|
|
rh_status_q || exit 0
|
|
restart
|
|
;;
|
|
*)
|
|
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
|
|
exit 2
|
|
esac
|
|
|
|
exit $?
|