需求:容器中需要跑一个tomcat服务,要实现容器启动时随容器启动tomcat
实现方法:
1、自定义一个镜像,因为官方centos镜像默认/etc/rc.d/rc.local没有执行权限(centos7)
docker run -dit --volume /home/dockermount:/mnt centos /bin/bash
/home/dockermount 这个目录用于主机和容器之间复制数据
启动一个容器,配置好jdk和tomat,过程略过
chmod 777 /etc/rc.d/rc.local 添加权限
编辑 /etc/rc.local 添加jdk环境变量,添加tomcat启动脚本
JAVA_HOME=/usr/local/jdk PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH export CLASSPATH /usr/local/tomcat/bin/startup.sh /bin/bash
保存退出
提交到本地镜像
docker ps 查看刚才的容器id
[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f31da645ef98 centos:latest "/bin/bash" 6 minutes ago Up 6 minutes dev1 容器id 镜像别名 [root@localhost ~]# docker commit f31da645ef98 centos-tomcat [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos-tomcat latest bc6be3dd8ff8 17 seconds ago 620.2 MB [root@localhost ~]# docker run -dit --hostname dev --name dev --publish 10003:8080 --volume /home/dockermount:/mnt --restart always centos-tomcat /etc/rc.local
注意后面是 /etc/rc.local 会去执行这个,其实它就是个脚本
这样就实现容器里随容器启动而运行服务了。
原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/3706.html