Rootop 服务器运维与web架构

docker启动容器时启动容器中的服务

需求:容器中需要跑一个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

作者:Venus

服务器运维与性能优化

评论已关闭。