Docker容器内应用服务自启动的方法示例
时间:2018-09-18
这篇文章主要介绍了Docker容器内应用服务自启动的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
如果想把Docker容器内的应用服务随着容器开启时自启动。只需要将服务启动的脚本写在Dockerfile里,然后用Dockerfile重构镜像即可实现:
- 编写应用服务自启动脚本
- 编写Dockerfile
- 重构镜像
- 开启容器
编写服务自启动脚本(dockerd)
(tomcat为例)
#!/bin/bash # # # # chkconfig: 345 98 30 # description: tomcat program. # processname: tomcat # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. #. /etc/sysconfig/network prog="tomcat" checkprocess() { chkret=`ps -ef |grep $prog |grep -v "grep" |wc -l` return $chkret } start() { cd /usr/local/tomcat/bin/ ./startup.sh echo "Service $prog started!" } #/usr/sbin/nscd & /usr/sbin/sshd -D & while [ true ] do DNSIP=172.18.3.179 ping=`ping -c 3 $DNSIP|awk 'NR==7 {print $4}'` if [[ $ping -eq "3" ]] then break fi sleep 3 done while [ true ] do checkprocess if [[ $chkret -eq "0" ]] then start #nscd -i hosts else echo "Service $prog is running." fi sleep 60 done exit 0
编写Dockerfile
FROM tomcat MAINTAINER liu "350142639@qq.com" ADD dockerd /etc/rc.d/init.d/ RUN chmod 777 /etc/rc.d/init.d/dockerd ENV JAVA_HOME /usr/local/jdk1.6.0_30 ENV PATH $JAVA_HOME/bin:$PATH ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar CMD /etc/rc.d/init.d/dockerd
其中,ADD将同级目录下的脚本加入镜像的指定位置,ENV设置java的环境变量(很重要,不写这句自启动脚本无法执行成功)CMD命令只能有一个,用来在容器启动时,执行命令。也可以是脚本。
重构镜像
**通过
docker build -t 新的镜像名 .
成功制作新的镜像
开启容器
docker run -d -h=”s” –name=”s” 新的镜像名
然后,发现tomcat已经开启
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- 电工学PLC编程的入门建议
- 人工智能、区块链、图灵测试……这30个大数据热词你真的都懂吗?
- Enterprise Library 4.1学习笔记4----缓存应用程序块
- 设置py文件的路径
- jenkins中通过git发版操作记录
- Enterprise Library 4.1学习笔记3----安全应用程序块
- mysql密码遗忘和登陆报错问题
- 新一轮发展趋势:城市智能化已经势不可挡
- Enterprise Library 4.1学习笔记2----数据访问程序块
- 微信小程序中用户唯一ID的获取
- Mysql备份系列(2)--mysqldump备份(全量+增量)方案操作记录
- Enterprise Library 4.1学习笔记1----配置应用程序块(c/s和b/s均适用)
- 简单账本-用完即走的微信小程序
- 新技术革命和新产业变革正进行 “互联网+大数据+人工智能+”时代正到来
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【从0到1学算法】快速排序
- 每天一道前端面试题:左边宽度固定,右边⾃适应
- 几个IDEA高级调试技巧,完全是bug杀手啊
- Spring Security 实战干货:从零手写一个验证码登录
- LaTex学习笔记
- 聊聊dubbo-go的metricsFilter
- 配置.gitignore
- 同样的GitHub包你就下载失败
- Linux编译C++
- 聊聊dubbo-go的tracingFilter
- JDBC - 第一天
- JavaSE - 排序算法
- JavaSE - 多态的本质
- Result Maps collection does not contain value for XXX 错误
- 当端口被占用如何kill占用端口的进程