互联网服务Docker

容器里服务使用什么方式自启动?

容器里服务使用什么方式自启动?

参与3

1同行回答

dl528888dl528888系统运维工程师游戏公司
2个方法,一个是写一个死循环脚本,另外一个是使用supervisord。supervisord可以参考如下内容:CentOS7 安装Supervisor# 安装sudo yum install python-setuptools -ysudo easy_install supervisor# 生成默认配置文件sudo sh -c \'echo_supervisord_conf > /etc/supervisord.co...显示全部

2个方法,一个是写一个死循环脚本,另外一个是使用supervisord。

supervisord可以参考如下内容:


CentOS7 安装Supervisor

# 安装

sudo yum install python-setuptools -y

sudo easy_install supervisor

# 生成默认配置文件

sudo sh -c \'echo_supervisord_conf > /etc/supervisord.conf\'

# 创建启动脚本

sudo vim /etc/rc.d/init.d/supervisord

下面是init脚本

#!/bin/bash

. /etc/init.d/functions

DAEMON=/usr/bin/supervisord

PIDFILE=/var/run/supervisord.pid

[ -x \"$DAEMON\" ] || exit 0

start() {

        echo -n \"Starting supervisord: \"

        if [ -f $PIDFILE ]; then

                PID=`cat $PIDFILE`

                echo supervisord already running: $PID

                exit 2;

        else

                daemon  $DAEMON --pidfile=$PIDFILE -c /etc/supervisord.conf

                RETVAL=$?

                echo

                [ $RETVAL -eq 0 ] && touch /var/lock/subsys/supervisord

                return $RETVAL

        fi

}

stop() {

        echo -n \"Shutting down supervisord: \"

        echo

        killproc -p $PIDFILE supervisord

        echo

        rm -f /var/lock/subsys/supervisord

        return 0

}

case \"$1\" in

    start)

        start

        ;;

    stop)

        stop

        ;;

    status)

        status supervisord

        ;;

    restart)

        stop

        start

        ;;

    *)

        echo \"Usage:  {start|stop|status|restart}\"

        exit 1

        ;;

esac

exit $?

别忘了给脚本赋权

sudo chmod +x /etc/rc.d/init.d/supervisord

配置Supervisor

新建一份独立配置文件,比如 /media/storage/work/supervisord.ini, 配置各container的启动

docker start -a 表示附加到已有容器,或者启动新容器(如果未启动)

[program:zookeeper]

command=/usr/bin/docker start -a zookeeper

[program:env3_mysql_log]

command=/usr/bin/docker start -a env3_mysql_log

[program:stage_mysql_log]

command=/usr/bin/docker start -a stage_mysql_log

[program:stage_redis]

command=/usr/bin/docker start -a stage_redis

[program:webapi-1]

command=/usr/bin/docker start -a webapi-1

[program:webapi-2]

command=/usr/bin/docker start -a webapi-2

[program:webapi-3]

command=/usr/bin/docker start -a webapi-3

然后在 /etc/supervisord.conf 配置中引入此配置文件

[include]

files = /media/storage/work/supervisord.ini

最后启动supervisord服务

sudo service supervisord restart


[url=http://blog.csdn.net/wangjia184/article/details/44749037][/url]

收起
互联网服务 · 2016-01-22
浏览1771

提问者

zhenzongjian
软件开发工程师na
擅长领域: 服务器AIXUnix

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2016-01-22
  • 关注会员:2 人
  • 问题浏览:5170
  • 最近回答:2016-01-22
  • X社区推广