docker制作自定义的tomcat镜像,并且镜像可以在启动新容器后自动启动(方便后期做k8s端口暴露)

本为原创,转载请说明出处!
环境准备:
1、centos 7.4并且可以链接阿里的镜像源
2、通过阿里源已经部署docker
3、准备主机:192.168.226.135 master
4、需要链接外网,并配置yum源(下载阿里镜像会用到)

技能要求:
1、了解基本docker命令

软件包准备:
jdk-8u144-linux-x64.tar.gz
下载地址:https://pan.baidu.com/s/1jJyfm-uWQucsswt5WDY0kQ
提取码:pvyj

apache-tomcat-10.0.0-M7.tar.gz
下载地址:https://pan.baidu.com/s/16fg1BIbtY6eiolsjF8NZZA
提取码:0qxh

镜像制做:
1、定义阿里的docker镜像仓库:

[root@vm135 opt]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.226.135:5000"]     #这里是做为本地镜像私库时设置,这里可以不添加此行
}
[root@vm135 opt]# systemctl restart docker

2、下载docker基础版centos镜像,我这里下载的是centos8.1

[root@vm135 opt]# docker search centos
[root@vm135 opt]# docker pull docker.io/centos

3、用基础centos基本版镜像创建容器

[root@vm135 opt]# docker run -itd docker.io/centos:latest /sbin/init       #这里需要注意用/sbin/init来创建新的容器,不能用/bin/bash,否则后面做tomcat开机自启时systemctl会无效
#如果在docker里不能使用systemctl可以在创建docker时添加--privileged=true来指定初始化程序为/sbin/init
[root@vm135 opt]# docker  ps     #会显示容器ID号(随机创建,这里是:4b7f13bac473)
[root@vm135 opt]# docker  exec -it  4b  bash     #进入容器:4b代表上面的容器ID号,bash是指/bin/bash

4、在基础容器里安装一些小工具(确保yum可以用)

(1)ifconfig命令

[root@4b7f13bac473 /]#  yum  -y  install net-tools 

(2)vim编辑器

[root@4b7f13bac473 /]#  yum -y install vim

(3)tab补全键
安装epel 源

[root@4b7f13bac473 /]#  yum -y install epel-release

安装bash-completion超强的命令补全工具

[root@4b7f13bac473 /]#  yum -y install bash-completion

立即生效

[root@4b7f13bac473 /]#  source /etc/profile.d/bash_completion.sh  

或者退出终端重新登录

(4)安装sshd(此可以不用安装)

[root@4b7f13bac473 /]# yun -y install  openssh-server openssh-client

5、部署JAVA_HOME
下载jdk-8u144-linux-x64.tar.gz并上传到容器里,方法有很多,这里是下载到本地,再传到容器里。

[root@vm135 opt]# docker cp   /opt/jdk-8u144-linux-x64.tar.gz   4b7f13bac473:/usr/local/java/

#把本机上opt下的jdk上传到容器里的java目录下(此地址随意,如果容器里没有java目录可以手动创建一个再上传)

在容器里执行:这里是在/root/.bashrc里添加的,如果在/etc/profile里添加,容器新创建时不会立即生效,需要到容器里再执行source /etc/profile才能生效。

[root@4b7f13bac473 /]# tar -xf  /usr/local/java/jdk-8u144-linux-x64.tar.gz

[root@4b7f13bac473 /]#  vim  /root/.bashrc   
export JAVA_HOME=/usr/local/java/jdk1.8.0_144

6、部署tomcat

[root@vm135 opt]# docker cp   /opt/apache-tomcat-10.0.0-M7.tar.gz   4b7f13bac473:/usr/local/tomcat/
[root@vm135 opt]# docker  exec -it  4b  bash     #进入容器
[root@4b7f13bac473 /]#  cd /usr/local/tomcat/
[root@4b7f13bac473 tomcat ]#  tar  -xf  /usr/local/tomcat/apache-tomcat-10.0.0-M7.tar.gz
[root@4b7f13bac473 tomcat ]# mv apache-tomcat-10.0.0-M7  tomcat-10.0.0
[root@4b7f13bac473 tomcat ]#  cd tomcat-10.0.0
[root@4b7f13bac473 tomcat-10.0.0]# bin/startup.sh   #启动tomcat是否正常
[root@4b7f13bac473 tomcat-10.0.0]# bin/shutdown.sh #关闭tomcat

7、配置tomcat开机自启(也就是创建容器后自动开启tomcat)

[root@4b7f13bac473 tomcat-10.0.0]# cd bin/
[root@4b7f13bac473 bin]# vim  catalina.sh
#找到[ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME" 这一行,一般在153行。在这行下方添加:
CATALINA_PID="$CATALINA_BASE/tomcat.pid"

创建tomcat.service文件:

vim /lib/systemd/system/tomcat.service
内容如下:
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking

Environment="JAVA_HOME=/usr/local/java/jdk1.8.0_144"  #这里添加jdk的路径

PIDFile=/usr/local/tomcat/tomcat-10.0.0/tomcat.pid  #这里是tomcat.pid的位置,就是上步在catalina.sh里添加的
ExecStart=/usr/local/tomcat/tomcat-10.0.0/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
[root@4b7f13bac473 bin]# systemctl daemon-reload
[root@4b7f13bac473 bin]# systemctl start tomcat

验证tomcat是否启动了

[root@4b7f13bac473 bin]# netstat -tunlp

把tomcat加入到开机自启动

[root@4b7f13bac473 bin]# systemctl  enable tomcat

8、创建自定义的镜像

[root@vm135 ~]# docker commit -m "admin" -a "docker-tomcat" 4b7f13bac473 tomcat:v1.01

#-m是指定创建的信息,即详细说明,-a是指定制作者,后面以次是容器ID,新创建的镜像信息。

[root@vm135 ~]# docker images

9、验证:

[root@vm135 ~]# docker run -itd tomcat:v1.01  /sbin/init
[root@vm135 ~]# docker ps
[root@vm135 ~]# docker exec -it 容器ID  bash

进入容器后可用netstat -tunlp命令查看tomcat已经启动

备注:后续会再优化本文,如有不足请提出,会尽快修改。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值