- 编写服务文件并注册入service
vi /etc/init.d/zookeeper
case $1 in
start) su root /usr/lib/zookeeper/apache-zookeeper-3.8.0-bin/bin/zkServer.sh start;;
stop) su root /usr/lib/zookeeper/apache-zookeeper-3.8.0-bin/bin/zkServer.sh stop;;
status) su root /usr/lib/zookeeper/apache-zookeeper-3.8.0-bin/bin/zkServer.sh status;;
restart) su root /usr/lib/zookeeper/apache-zookeeper-3.8.0-bin/bin/zkServer.sh restart;;
*)echo "require start|stop|status|restart";;
esac
chmod +x /etc/init.d/zookeeper
update-rc.d zookeeper defaults
这样就可以用service zookeeper start 启动服务了
- 将容器设置为开机自启动
docker update --restart=always 容器名称或容器ID
(docker update cf877cb5ea48 --restart=no 关闭自启)
- 在运行时将容器设置为自启动并运行容器内的服务启动脚本
vi /etc/service_init.sh
#!/bin/bash
service mysql start
echo 'mysql start success' >> /etc/service/log/service_init_log.txt
mongod -fork -config /usr/local/mongodb/mongodb.conf
echo 'mongodb start success' >> /etc/service/service_init_log.txt
supervisord
service supervisor start
echo 'supervisor start success' >> /etc/service/service_init_log.txt
service zookeeper start
echo 'zookeeper start success' >> /etc/service/service_init_log.txt
/bin/bash
:wq!
生成并运行容器与容器内的服务脚本
docker run -itd --restart=always --name cs8.6 ubuntu-cs /bin/bash -c "/etc/service_init.sh start"
--ubuntu-cs为镜像名称,docker images查看
-
docker ps查看cs8.6容器是否运行
-
docker -d拓展出现容器闪退,该用docker -itd
附:手动启动zookeeper服务
vi docker_start.sh
#!/bin/bash
systemctl start docker
docker exec -it ed45868243b3 /bin/bash
service zookeeper start
/bin/bash
sh docker_start.sh