前言

(1)写在前面的话,鉴于在linux或类unix系统中安装jdk+tomcat等环境,没有什么经验,所以选择在docker容器中安装之,以防止安装失败无法恢复系统

(2)需要下载对应的系统的docker镜像,如:centos、Ubuntu等

(3)本文并未没有docker安装所需的相关环境说明,可自行查看官网并安装之,此处略

1、下载CENTOS的docker镜像

镜像下载地址DaoCloud

  1. [root@izwz99jhv6u546yu27nrwdz downloads]# docker pull centos

下载完成后,查看已下载的镜像如下:即centos

  1. [root@izwz99jhv6u546yu27nrwdz downloads]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. richarvey/nginx-php-fpm latest b45e0c814c3f 4 days ago 269 MB
  4. golang latest 7afbc2b03b9e 2 weeks ago 675 MB
  5. daocloud.io/library/nginx latest cc1b61406712 3 weeks ago 182 MB
  6. nginx latest cc1b61406712 3 weeks ago 182 MB
  7. php 7-fpm 65ec79b1c89d 3 weeks ago 377 MB
  8. php latest 608e59384e11 3 weeks ago 364 MB
  9. daocloud.io/library/ubuntu latest f49eec89601e 3 weeks ago 129 MB
  10. centos latest 67591570dd29 2 months ago 192 MB

2、进入镜像centos进行相关操作

(1)一些必要的准备比如:安装vim、新建需要的一些目录等

  1. [root@izwz99jhv6u546yu27nrwdz downloads]# docker run -it centos /bin/bash
  2. [root@92896fb7e091 /]# yum install vim*
  3. ...(此处省略n行)...
  4. Complete!
  5. #说明vim安装成功了
  6. [root@92896fb7e091 /]# mkdir -p /home/wangjie
  7. #说明-弄个目录留下面挂载用
  8. 备注:此时需要记住此时的容器ID92896fb7e0912中备份需要

(2)备份上面对镜像的修改

  1. [root@92896fb7e091 bin]# exit
  2. exit
  3. [root@izwz99jhv6u546yu27nrwdz ~]# docker commit -m "Added vim_lrzsz_wangjie" -a "Docker Newbee" 92896fb7e091 centos_vim_lrzsz
  4. //其中:
  5. -m 来指定提交的说明信息,跟我们使用的版本控制工具一样;
  6. -a 可以指定更新的用户信息;
  7. 92896fb7e091 是用来创建镜像的容器的 ID
  8. centos_vim_lrzsz是指定目标镜像的仓库名(centos_vim_lrzsz)
  9. 创建成功后会返回新镜像的 ID
  10. sha256:6ddbdb552b7db7f6cffdba3612664dc9bd25715e079aecefd98d5451ffb8ca35
  11. [root@izwz99jhv6u546yu27nrwdz ~]# docker images
  12. [root@izwz99jhv6u546yu27nrwdz webapps]# docker images
  13. REPOSITORY TAG IMAGE ID CREATED SIZE
  14. centos_vim_lrzsz latest 89796a5c0215 2 hours ago 362 MB

3、在宿主机弄个目录用于被挂载即对应1中容器的目录

  1. [root@izwz99jhv6u546yu27nrwdz ~]# mkdir -p /home/wangjie/tomcat8
  2. [root@izwz99jhv6u546yu27nrwdz ~]# cd /home/wangjie/tomcat8
  3. 通过rz上传已下载的jdk文件和tomcat到这个目录下,此处我用的是tomcat-8.0.24jdk-8u91-linux-x64,各位看官可以换成你想要的其他版本。
  4. [root@izwz99jhv6u546yu27nrwdz tomcat8]# ll
  5. total 186028
  6. -rw-r--r-- 1 root root 9106353 Aug 25 14:47 apache-tomcat-8.0.24.tar.gz
  7. -rw-r--r-- 1 root root 181367942 May 5 2016 jdk-8u91-linux-x64.gz

4、再次进入新容器进行相关操作

(1)启动并将宿主机目录/home/wangjie/tomcat8挂载到容器中的目录/home/wangjie下

  1. [root@izwz99jhv6u546yu27nrwdz tomcat8]# docker run -i -t -v /home/wangjie/tomcat8:/home/wangjie 89796a /bin/bash
  2. //其中:
  3. -i 表示以"交互模式"运行容器
  4. -t 表示容器启动后会进入其命令行
  5. -v 表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机绝对目录>:<容器绝对目录>
  6. 89796a 2中新容器的ID,也可以用"容器名:TAG"唯一即可
  7. /bin/bash 即进入容器后的bash shell命令行对应-t
  8. [root@0bfc23706742 /]#

(2)在容器中安装jdk和tomcat

  1. [root@0bfc23706742 /]# mkdir -p /opt/tomcat/
  2. //新建一个目录用于安装tomcat
  3. [root@0bfc23706742 /]# mkdir -p /opt/jdk/
  4. //新建一个目录用于安装jdk
  5. [root@0bfc23706742 /]# cd /home/wangjie
  6. //切到挂载目录下并查看文件
  7. [root@0bfc23706742 wangjie]# ls
  8. apache-tomcat-8.0.24.tar.gz jdk-8u91-linux-x64.gz
  9. //即宿主机目录/home/wangjie/tomcat8中的文件
  10. [root@0bfc23706742 wangjie]# tar -zxf apache-tomcat-8.0.24.tar.gz -C .
  11. //tomcat解压后移动之
  12. [root@0bfc23706742 wangjie]# mv apache-tomcat-8.0.24/ /opt/tomcat/
  13. [root@0bfc23706742 wangjie]# cd /opt/tomcat/
  14. [root@000308aec801 tomcat]# ll
  15. total 4
  16. drwxr-xr-x 9 root root 4096 Feb 22 02:18 apache-tomcat-8.0.24
  17. [root@0bfc23706742 wangjie]# tar -zxf jdk-8u91-linux-x64.gz -C .
  18. //jdk解压后移动之
  19. [root@0bfc23706742 wangjie]# mv jdk-8u91-linux-x64/ /opt/jdk/
  20. [root@0bfc23706742 wangjie]# cd /opt/jdk/
  21. [root@000308aec801 jdk]# ll
  22. total 4
  23. drwxr-xr-x 8 10 143 4096 Apr 1 2016 jdk1.8.0_91

(3)编写运行脚本

  1. 当容器运行时,运行该脚本,启动tomcat
  2. [root@0bfc23706742 wangjie]# mkdir -p /root/run.sh
  3. [root@0bfc23706742 wangjie]# vim /root/run.sh
  4. #!/bin/bash
  5. export JAVA_HOME=/opt/jdk/jdk1.8.0_91
  6. export PATH=$JAVA_HOME/bin:$PATH
  7. sh /opt/tomcat/apache-tomcat-8.0.24/bin/catalina.sh run
  8. 修改脚本执行权限
  9. [root@0bfc23706742 wangjie]# chmod u+x /root/run.sh

(4)相关操作后…exit。参考2中的备份,再次新建一个容器即可运行tomcat的容器

  1. [root@0bfc23706742 wangjie]# exit
  2. //[root@izwz99jhv6u546yu27nrwdz tomcat8]# docker commit -m "Added jdk_tomcat" -a "Docker Newbee" 0bfc23706742 centos_jdk_tomcat
  3. 此处,为了演示,新增个测试用的新容器
  4. [root@izwz99jhv6u546yu27nrwdz tomcat8]# docker commit 0bfc23706742 test_tomcat:1.0
  5. [root@izwz99jhv6u546yu27nrwdz tomcat8]# docker images
  6. 可以查看所有新增的镜像
  7. REPOSITORY TAG IMAGE ID CREATED SIZE
  8. test_tomcat 1.0 80f2fd55c5a0 2 hours ago 740 MB
  9. centos_jdk_tomcat latest 38ac50abc54b 2 hours ago 740 MB
  10. [root@izwz99jhv6u546yu27nrwdz tomcat8]# docker ps
  11. 可以看到没有任何正在运行的容器--因为exit的容器都是停止的
  12. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  13. [root@izwz99jhv6u546yu27nrwdz tomcat8]# docker ps -a
  14. 可以查看所有已新增的容器(运行的或已停止的)
  15. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  16. b44d32861981 test_tomcat:1.0 "/root/run.sh" 2 hours ago Exited (137) 51 minutes ago test_tomcat_1
  17. 0bfc23706742 89796a "/bin/bash" 2 hours ago Exited (0) 2 hours ago quirky_shaw
  18. 92896fb7e091 centos_vim_lrzsz:v1 "/bin/bash" 3 hours ago Exited (0) 3 hours ago practical_meitner

5、在宿主机准备项目文件,并挂载到docker环境并启动

  1. [root@izwz99jhv6u546yu27nrwdz tomcat8]# mkdir webapps
  2. [root@izwz99jhv6u546yu27nrwdz tomcat8]# cd webapps
  3. //rz上传项目代码,以jenkins.war为例
  4. [root@izwz99jhv6u546yu27nrwdz webapps]# ll
  5. total 81140
  6. -rw-r--r-- 1 root root 69874457 Feb 22 10:57 jenkins.war

一切就绪,开始运行tomcat服务

  1. [root@izwz99jhv6u546yu27nrwdz webapps]# docker run -d -p 58080:8080 -v /home/wangjie/tomcat8/webapps/:/opt/tomcat/apache-tomcat-8.0.24/webapps/ --name test_tomcat_1 test_tomcat:1.0 /root/run.sh
  2. //其中:
  3. -v 略,如前所述说
  4. -d 表示以"守护模式"执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上
  5. -p 表示宿主机与容器的端口映射,此时将容器内部的8080端口映射为宿主机的58080端口,这样就向外界暴露了58080端口,可通过Docker网桥来访问容器内部的8080端口了
  6. --name 表示容器名称,用一个你觉得有意义的名称命名即可
  7. test_tomcat:1.0 即新容器名:TAG
  8. /root/run.sh 即需要执行的脚本
  9. [root@izwz99jhv6u546yu27nrwdz tomcat8]# docker ps
  10. 可以看到正在运行的容器了

当然你可能会问容器中的tomcat正常启动了吗?日志怎么看?

  1. [root@izwz99jhv6u546yu27nrwdz webapps]# docker logs e25a7d9f4506
  2. 说明:docker logs [正在运行的容器ID]
  3. ...(此处省略n 容器中的tomcat运行日志)...

6、打开浏览器访问之

  • (1). 访问-http://120.77.207.178:58080/jenkins 
    可以正常进入初始页面了. 
  • (2). 此时可能第一个页面需要初始化admin的密码(如上图),密码从哪来呢? 
    从第5步中的日志中可以看到,复制出来放到页面中即可
  • (3). jenkins此处不再赘述。。。

7、其他:

疑问:”以上docker镜像只装了jdk和tomcat,如果有的项目(war包)需要连接数据库(比如:mysql),或还需要PHP、python、apache服务怎么办?”

答复:接上面已经新建的容器继续添加相关服务器即可,当然也可以不都安装在一个镜像中,,可以外接单独的镜像,比如:mysql镜像,然后和上面的镜像进行组装。。。。 
待尝试。。。。

docker环境搭建centos+jdk+tomcat_CENTOS篇的更多相关文章

  1. 环境搭建-CentOS集群搭建

    环境搭建-CentOS集群搭建 写在前面 最近有许多小伙伴问我,大数据的hadoop分布式集群该如何去搭建.所以,想着,就写一篇博客,帮助到更多刚入门大数据的人.本博客会一步一步带你实现一个Hadoo ...

  2. centos7系统下 docker 环境搭建

    运行环境: VMware Workstation Pro 在虚拟机中安装centos7系统, 选择最小安装, 网络连接方式选择的桥接(与宿主机在同一IP段)centos7一定要安装64位, docke ...

  3. win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

    win7环境基础在上一篇win7下docker环境搭建nginx+php-fpm+easyswoole开发环境中已经详细叙述搭建完成 本篇文章将叙述如何在上述基础上搭建laravel开发环境,这个其实 ...

  4. Docker环境搭建以及基本操作

    Docker环境搭建以及基本操作 Docker环境基本搭建: 基础环境:Centos 7.4        IP:192.168.30.117 [root@docker ~]# cat /etc/re ...

  5. Docker 环境搭建(RedHat 7)

    Docker 环境搭建(RedHat 7): CentOS7 下载 http://mirrors.sohu.com/centos/7/isos/x86_64/ 装载镜像文件 安装Linux 7, 参考 ...

  6. Hadoop环境搭建(centos)

    Hadoop环境搭建(centos) 本平台密码83953588abc 配置Java环境 下载JDK(本实验从/cgsrc 文件中复制到指定目录) mkdir /usr/local/java cp / ...

  7. CentOS Docker环境搭建教程

    安装与配置 Docker 安装 Docker Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想要安装 docker,只需要运行下面的 yum 命令: yum inst ...

  8. JAVA基础学习——1.1 环境搭建 之jdk安装,环境变量配置 (系统Win10,64bit)

    大学里虽然老师教过JAVA,但我没学.后来工作了,断断续续的也碰到了JAVA的项目,都是拉过来就干的节奏.也没有好好系统的学习一下. 从今天开始系统学习整理一下JAVA,以后再碰到JAVA项目的时候, ...

  9. ubuntu java开发环境搭建(jdk+tomcat+eclipse)

    一.jdk的安装配置. 1.下载jdk. 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213 ...

随机推荐

  1. (转)typedef 函数指针的用法

    typedef 函数指针的用法   在网上搜索函数指针,看到一个例子.开始没看懂,想放弃,可是转念一想,这个用法迟早要弄懂的,现在多花点时间看懂它,好过以后碰到了要再花一倍时间来弄懂它.其实很多时候都 ...

  2. Gray Code - 格雷码

    基本概念 格雷码是一种准权码,具有一种反射特性和循环特性的单步自补码,它的循环.单步特性消除了随机取数时出现重大误差的可能,它的反射.自补特性使得求反非常方便.格雷码属于可靠性编码,是一种错误最小化的 ...

  3. oracle的varchar2和clob类型在hibernate中使用

    1.在oracle中 varchar2的最大长度为4000 bytes,即varchar2(4000),最多能储存2000个汉子或4000位的数字字母.当储存值超过时可以使用clob(Characte ...

  4. C# 使用IrisSkin2.dll皮肤库C# ssk皮肤

    其实皮肤就是一个第三方的控件,名字是IrisSkin2.dll只要添加到你的工具箱里就可以和其它控件一样使用了下面我说一下使用的方法,不对的地方大家多指教啊. 一.添加控件IrisSkin2.dll. ...

  5. HTML input只能输入数字

    onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" onafterpaste="this.value=this.v ...

  6. C++ string char[] 转化

    可见到string转char[]相当简单,只要呼叫string class的成员函式c_str(),即可将string转为char[].那么char[]转string呢?有两种方法,第一种是初始str ...

  7. java导出word文件

    java导出word文件 test5.ftl文件生存方法, 第一步:用word新建test5.doc,填写完整模板,将需导出数据用${}代替 第二步:将test5.doc另存为test5.xml 第三 ...

  8. ChemOffice Professional 16.0新增了哪些功能

    ChemOffice Professional 16.0是为终极化学和生物组件设计,可满足化学家和生物学家的需求.ChemOffice Professional帮助科学家有效地检索数据库,包括SciF ...

  9. js简单的弹出框有关闭按钮

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. linux环境中,nginx安装过程

    需求描述: 记录在linux平台,nginx安装的过程. 环境描述: 操作系统:Red Hat Enterprise Linux Server release 6.6 (Santiago) 操作内核版 ...