上一篇已经介绍了docker相关的基本命令,这篇我们来详细介绍下通过docker如何创建一个toncat应用容器。
方法一:
如果不想自己搭建tomcat应用容器的话,可以直接在Docker Hub上直接search tomcat ,如下图:
docker search tomcat
可以看到有好多的内容,如果搜索结果显示有相关镜像,则可以直接通过 docker pull tomcat 来下载 tomcat镜像。
docker pull tomcat
当提示下载完毕时,我们可以通过docker images 查看本地是否已经有了该镜像
docker images
此时已经显示本地已经有了tomcat相关镜像
这时,我们可以通过docker run 命令来启动该服务:
docker run 命令后面可以跟很多参数主要参数有以下几种:
- -d 后台模式启动
- -i 标准输出
- -t 为虚拟终端
- -p 端口映射 是指本地端口与容器发布服务端口的一对一映射
- -P 随机端口映射 是只随机找一个端口与容器发布服务的端口映射
- --name 给容器起别名
- --net 选择网络模式
- --restart 设置该容器是否在docker服务启动时自动启动
- -v 挂在本地文件或者数据卷
我们先通过docker run --name test1 -p 22222:8080 -it tomcat:latest 启动一个前台的tomcat容器
docker run --name test1 -p 22222:8080 -it tomcat:latest
通过图片可以发现tomcat服务已经启动成功了,我的虚拟机的ip地址是172.16.1.58我们试着通过业务访问一下。
此时tomcat已经正常可用了。我们可以看到通过docker hub提供的镜像启动的tomcat的版本是8.5,如果我需要使用其他版本的tomcat该怎么办呢??此时可以通过dockerfile文件创建自己想安装版本的tomcat,那需要如何实现呢?
方法二:(dockerfile文件版)
所谓通过dockerfile文件创建一个应用容器,我个人认为就是通过将一套特定的变量规则编写在文件内,让程序可以识别并正确执行下去,具体如何创建的,请参考代码:
创建一个tomcat_dockerfile文件,并写入一下内容
#Base image
FROM centos:7 定义自己创建系统需要的底层镜像文件
MAINTAINER
MAINTAINER [email protected] 作者说明
RUN yum install epel-release -y 安装相关插件
RUN yum install net-tools wget supervisor -y 安装相关插件
WORKDIR /web/ 设置容器工作的目录
RUN \cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 修改容器的显示时间,不该时间会显示不准确
RUN wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.11/bin/apache-tomcat-9.0.11.tar.gz 下载9版本的tomcat 到容器中
RUN tar zxf apache-tomcat-9.0.11.tar.gz 解压压缩包
RUN rm apache-tomcat-9.0.11.tar.gz -rf 删除压缩包
RUN mv apache-tomcat-9.0.11 tomcat 将tomcat压缩包改名
RUN echo ‘[program:tomcat]‘ >> /etc/supervisord.d/tomcat.ini 创建supervisor监控tomcat的配置文件
RUN echo ‘command= /web/tomcat/bin/catalina.sh run ‘ >> /etc/supervisord.d/tomcat.ini
RUN echo ‘ autostart=true‘ >> /etc/supervisord.d/tomcat.ini
RUN echo ‘ autorestart=unexpected‘ >> /etc/supervisord.d/tomcat.ini
COPY jdk-8u181-linux-x64.tar.gz /web/ 从本地往容器中拷入jdk
RUN tar zxf jdk-8u181-linux-x64.tar.gz 解压jdk
RUN mv jdk1.8.0_181 java 给jdk改名
RUN rm -rf jdk-8u181-linux-x64.tar.gz 删除jdk压缩文件包
ENV JAVA_HOME /web/java 设置jdj的环境变量
ENV CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
EXPOSE 8080 发布此容器开发的端口
ENTRYPOINT ["supervisord","-n",-c","/etc/supervisord.conf"] 容器启动后运行的默认命令
写好以上dockefile文件后 可以通过 docker build 命令生成相关的镜像文件,需要注意的是 在通过build创建镜像时,建议单独建立一个文件夹 将镜像所需要的所有内容均拷贝至该文件夹内进行操作,不要再根目录操作不然生成的镜像会携带大量无用的文件。
docker build -f tomcat_dockerfile -t tomcat-test:9 ./
-f 代表是通过指定的dickerfile文件来创建镜像
-t 代表创建好的镜像的名称和标签
./ 代表是当前目录 ,创建文件中强烈建议在需要创建的当前目录进行操作。
当提示镜像创建成功时,我们可以通过docker images 来查看是否已经生成镜像
通过图片说明我们已经成功生成了一个镜像文件
此时可以已后台的方式利用创建好的镜像启动一个容器
docker run --name test2 -dp 33333:8080 tomcat_test:9 ,创建完毕后可以通过docker images查看是否成功
此时容器已经创建成功,可以通过web进行访问
通过浏览器我们可以清楚的看到tomcat已经启动,至此方法二已经讲解完毕
方法三:
这种方法类似于常规的系统中的tomcat安装,我们需要先从docker hub上下载已经tomcat的基础镜像并通过这个镜像创建一个容器后,我们直接在容器内进行tomcat的安装。
创建镜像的命令是 docker run -ti --name tomcat centos:latest ,通过这条命令可以创建容器并进入容器,然后可以在容器里面根据正常tomcat安装的步骤进行安装,待安装完毕后通过exit退出容器,并用以下命令生成镜像
docker commit + 容器名 +要生成镜像名称:标签 即可生成镜像。
需要特别注意的是强烈不介意通过这种方式生成镜像,个人建议通过第二中方法来生成镜像,至于为何不建议通过此种方法生成镜像,已经在之前的docker 常用命令一文中说明,此处就不再进行说明了。
原文地址:http://blog.51cto.com/demonlg/2164039