Created
August 18, 2016 07:29
-
-
Save jiahut/3bda0e57184caf99339c9f39e3169bcc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# | |
# /etc/rc.d/init.d/docker | |
# | |
# Daemon for docker.com | |
# | |
# chkconfig: 2345 95 05 | |
# 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" | |
unshare=/usr/bin/unshare | |
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 | |
[ -e /etc/sysconfig/${prog}-storage ] && . /etc/sysconfig/${prog}-storage | |
[ -n "${DAEMON_MAXFILES}" ] && ulimit -n "${DAEMON_MAXFILES}" | |
# Additional start options for the Docker daemon can | |
# be defined in the $OPTIONS variable in /etc/sysconfig/docker, | |
# which is also the variable name referenced by the systemd unit. | |
# If $OPTIONS is not defined, we set it to the value of $other_args, | |
# which is the variable name expected by the upstream sysvinit script. | |
OPTIONS="${OPTIONS:-${other_args}}" | |
prestart() { | |
service cgconfig status > /dev/null | |
if [[ $? != 0 ]]; then | |
service cgconfig start | |
fi | |
} | |
start() { | |
if [ ! -x $exec ]; then | |
if [ ! -e $exec ]; then | |
echo "Docker executable $exec not found" | |
else | |
echo "You do not have permission to execute the Docker executable $exec" | |
fi | |
exit 5 | |
fi | |
check_for_cleanup | |
if ! [ -f $pidfile ]; then | |
prestart | |
printf "Starting $prog:\t" | |
echo "\n$(date)\n" >> $logfile | |
"$unshare" -m -- nohup $exec daemon ${OPTIONS} ${DOCKER_STORAGE_OPTIONS} &>> $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)) | |
echo -n '.' | |
done | |
if [ ! -f $pidfile ]; then | |
failure | |
echo | |
exit 1 | |
fi | |
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 | |
} | |
check_for_cleanup() { | |
if [ -f ${pidfile} ]; then | |
/bin/ps -fp $(cat ${pidfile}) > /dev/null || rm ${pidfile} | |
fi | |
} | |
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 $? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment