对于java程序员来说,要想使用Docker来部署你的应用,那么在镜像中安装类似于tomcat的容器基本上是必须的(sprintboot项目除外),本篇介绍自己基于对centos镜像的修改,创建自己的想要的tomcat运行环境镜像的过程。

  1、拉取centos镜像 docker pull centos

  2、在宿主机(即你的linux机)穿件/opt/software目录,把要用到的安装包放在里面

  

  3、启动centos容器    docker run -i -t -v /opt/software/:/mnt/software/ --privileged=true 5182e96772bf /bin/bash,

  • -i:表示以“交互模式”运行容器

  • -t:表示容器启动后会进入其命令行

  • -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

  • --privileged=true 不加在容器内部可能会提示操作权限问题
  • 5182e96772bf是centos镜像的id

  本例中,所有安装程序都放在了宿主机的/opt/software/目录下,现在需要将其挂载到容器的/mnt/software/目录下。初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示启动后直接进入bash shell。

  4、安装软件

  cd /mnt/software,可以看到我们提前放置好的安装包

  jdk安装:tar -zxf /mnt/software/jdk-8u152-linux-x64.tar.gz -C /opt

  tomcat安装:tar -zxf /mnt/software/apache-tomcat-8.0.53.tar.gz -C /opt

  5、编写运行脚本

  touch /root/run.sh

  vi /root/run.sh

  编辑如下内容到脚本中

#!/bin/bash

export JAVA_HOME=/opt/jdk1.8.0_152/
export PATH=$JAVA_HOME/bin:$PATH sh /opt/apache-tomcat-8.0.53/bin/catalina.sh run

  为运行脚本添加执行权限: chmod u+x /root/run.sh

  6、退出容器,创建新镜像

  以上步骤完成后,输入exit退出容器,docker ps -a,可以看到刚刚修改好的容器,记住容器id

  使用以下命令,根据某个“容器 ID”来创建一个新的镜像 docker commit containerID mytomcat:1.0

  创建完成后输入 docker images,可以看到我们修改后的镜像

  7、根据我们创建的tomcat镜像,启动对应的容器

  docker run -d -p 9999:8080 -v /opt/webapps/:/opt/tomcat/webapps/ --name mytomcat_1 mytomcat:1.0 /root/run.sh

  • -d:表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。

  • -p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 9999 端口,这样就向外界暴露了 9999 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。

  • -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>,我们的web项目的jar可以放在/opt/webapps/下,重启容器,我们的应用就启动起来了

  • --name:表示容器名称,用一个有意义的名称命名即可。

Docker搭建tomcat运行环境(修改镜像方式)的更多相关文章

  1. Docker搭建tomcat运行环境(Dockerfile方式)

    上一篇文章的基本做法是通过centOS的官方镜像启动一个容器,然后进入到容器中,手动敲命令安装JDK跟tomcat,这个跟在linux下搭建没有什么区别,只是用来熟悉docker命令,并且在日常开发中 ...

  2. 使用Docker搭建Tomcat运行环境

    1 准备宿主系统 准备一个 CentOS 7操作系统,具体要求如下: 必须是 64 位操作系统 建议内核在 3.8 以上 通过以下命令查看您的 CentOS 内核: # uname -r 2 安装Do ...

  3. 使用 Docker 搭建 Tomcat 运行环境

    转自: http://m.oschina.net/blog/616526, 版权归原作者所有. 1 Docker与虚拟机     2 搭建过程 2.1 准备宿主系统 准备一个 CentOS 7操作系统 ...

  4. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

  5. Docker学习笔记之二,基于Dockerfile搭建JAVA Tomcat运行环境

    前言 在第一篇文字中,我们完全人工方式,一个命令一个命令输入,实现一个 java tomcat运行环境,虽然也初见成效,但很累人.如果依靠依靠脚本构建一个Tomcat容器实例,一个命令可以搞定,何乐而 ...

  6. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境(转)

    前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装.部署和升级,非常 ...

  7. [转]Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    本文转自:http://www.blogjava.net/yongboy/archive/2013/12/12/407498.html 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 ...

  8. 基于Dockerfile搭建JAVA Tomcat运行环境

    前言 在第一篇文字中,我们完全人工方式,一个命令一个命令输入,实现一个java tomcat运行环境,虽然也初见成效,但很累人.如果依靠依靠脚本构建一个Tomcat容器实例,一个命令可以搞定,何乐而不 ...

  9. Centos7安装Docker 基于Dockerfile 搭建httpd运行环境

    Centos7安装Docker 基于Dockerfile 搭建httpd运行环境 docker docker搭建 docker build 本文档完成目标内容如下 使用Docker搭建http服务器一 ...

随机推荐

  1. 编写高质量代码改善C#程序的157个建议——建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内

    建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内 如果需要在循环中引发异常,你需要特别注意,应为抛出异常是一个相当影响性能的过程.应该尽量在循环当中对异常发生的一些条 ...

  2. 设计模式4---原型模式(Prototype Pattern)

    原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 原型模式结构图 通俗来说:原型模式就是深拷贝和浅拷贝的实现. 浅拷贝 只实现了值拷贝,对于引用对象还是 ...

  3. opencv——pcb上找圆mark点(模板匹配)

    #include "stdafx.h" #include <cv.h> #include <highgui.h> #include <cxcore.h ...

  4. LEFT JOIN与RIGHT JOIN学习笔记

    SELECT COUNT(*) FROM [tbiz_PuzzleBasic] SELECT A.BasicID,A.Name,A.Gender,B.WorkID,B.Company,B.Positi ...

  5. Linux 下面screen命令的用法

            最近在使用阿里云的Linux 云服务做毕业设计遇到一些问题,我把java的jar运行程序上传之后,使用java -jar server命令之后程序开始正常运行,但是当我关闭终端的时候程 ...

  6. SPOJ distinct subtrings

    题目链接:戳我 后缀自动机模板? 求不同的子串数量. 直接\(\sum t[i].len-t[t[i].ff].len\)即可 代码如下: #include<iostream> #incl ...

  7. less配置

    一.sublime text需要下载考拉,然后要 一直打开着: 1.编译工具用koala编译 下载地址:http://koala-app.com/index-zh.html 2.LESS中的注释: 可 ...

  8. “全栈2019”Java第五十一章:继承与final关键字详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. PL/SQL数据开发那点事

    PL/SQL开发那点事----->PL/SQL开发过程中异常处理 用户编写的PL/SQL块在执行过程中不可避免地要发生一些错误. 这里涉及的错误并不是由于程序的语法错误引起的,而是因为处理的数据 ...

  10. uC/OS-II 函数之OSInit()

    获得更多资料欢迎进入我的网站或者 csdn或者博客园 对于有热心的小伙伴在微博上私信我,说我的uC/OS-II 一些函数简介篇幅有些过于长应该分开介绍.应小伙伴的要求,特此将文章分开进行讲解.本文主要 ...