软件环境:jdk、tomcat、docker、centos、虚拟机

首先,您要准备一个 CentOS 的操作系统,虚拟机也行。总之,可以通过 Linux 客户端工具访问到 CentOS 操作系统就行。

需要说明的是,Ubuntu 或其它 Linux 操作系统也能玩 Docker,只不过本文选择了以 CentOS 为例,仅此而已。

CentOS 具体要求如下:

  1. 必须是 64 位操作系统
  2. 建议内核在 3.8 以上

通过以下命令查看您的 CentOS 内核:

uname -r

如果执行以上命令后,输出的内核版本号低于 3.8,请参考下面的方法来来升级您的 Linux 内核。

对于 CentOS 6.5 而言,内核版本默认是 2.6。首先,可通过以下命令安装最新内核:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm
yum -y --enablerepo=elrepo-kernel install kernel-lt

随后,编辑以下配置文件:

vi /etc/grub.conf

default=1修改为default=0

最后,通过reboot命令重启操作系统获取【下载地址】  。

重启后如果不出意外的话,再次查看内核,您的 CentOS 内核将会显示为 3.10。

如果到这里,您和我们所期望的结果是一致的。恭喜您!下面我们就一起来安装 Docker 了。

安装 Docker

只需通过以下命令即可安装 Docker 软件:

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum -y install docker-io

可使用以下命令,查看 Docker 是否安装成功:

docker version

若输出了 Docker 的版本号,则说明安装成功了,可通过以下命令启动 Docker 服务:

service docker start

一旦 Docker 服务启动完毕,我们下面就可以开始使用 Docker 了。

做法

就像曾经安装软件一样,我们首先需要有一张刻录了该软件的光盘,如果您使用的是虚拟光驱,那么就需要运行一种名为“镜像”的文件,通过它来安装软件。在 Docker 的世界里,也有一个名为“镜像”的东西,已经安装我们所需的操作系统,我们一般成为“Docker 镜像”,本文简称“镜像”。

那么问题来了,我们从哪里下载镜像呢?

Docker 官网 确实已经提供了所有的镜像下载地址,可惜在国内却是无法访问的。幸好国内好心人提供了一个 Docker 中文网,在该网站上可以下载我们所需的 Docker 镜像。

下载镜像

我们不妨还是以 CentOS 为例,通过以下步骤,下载一个 CentOS 的镜像。

首先,访问 Docker 中文网,在首页中搜索名为“centos”的镜像,在搜索的结果中,有一个“官方镜像”,它就是我们所需的。

然后,进入 CentOS 官方镜像页面,在“Pull this repository”输入框中,有一段命令,把它复制下来,在自己的命令行上运行该命令,随后将立即下载该镜像。

最后,使用以下命令查看本地所有的镜像:获取【下载地址】

docker images

当下载完成后,您应该会看到:

REPOSITORY                TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.cn/docker/centos   centos6             25c5298b1a36        7 weeks ago         215.8 MB

如果看到以上输出,说明您可以使用“docker.cn/docker/centos”这个镜像了,或将其称为仓库(Repository),该镜像有一个名为“centos6”的标签(Tag),此外还有一个名为“25c5298b1a36 ”的镜像 ID(可能您所看到的镜像 ID 与此处的不一致,那是正常现象,因为这个数字是随机生成的)。此外,我们可以看到该镜像只有 215.8 MB,非常小巧,而不像虚拟机的镜像文件那样庞大。

现在镜像已经有了,我们下面就需要使用该镜像,来启动容器。

启动容器

容器是在镜像的基础上来运行的,一旦容器启动了,我们就可以登录到容器中,安装自己所需的软件或应用程序。既然镜像已经下载到本地,那么如何才能启动容器呢?

只需使用以下命令即可启动容器:

docker run -i -t -v /root/software/:/mnt/software/ 25c5298b1a36 /bin/bash

这条命令比较长,我们稍微分解一下,其实包含以下三个部分:

docker run <相关参数> <镜像 ID> <初始命令>

其中,相关参数包括:

  • -i:表示以“交互模式”运行容器
  • -t:表示容器启动后会进入其命令行
  • -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

假设我们的所有安装程序都放在了宿主机的/root/software/目录下,现在需要将其挂载到容器的/mnt/software/目录下。

需要说明的是,不一定要使用“镜像 ID”,也可以使用“仓库名:标签名”,例如:docker.cn/docker/centos:centos6。

初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。

安装相关软件

为了搭建 Java Web 运行环境,我们需要安装 JDK 与 Tomcat,下面的过程均在容器内部进行。我们不妨选择/opt/目录作为安装目录,首先需要通过cd /opt/命令进入该目录。

安装 JDK

首先,解压 JDK 程序包:

<1 wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u4-b20/jdk-7u4-linux-x64.tar.gz"
<2 tar -zxf jdk-7u4-linux-x64.tar.gz 

然后,重命名 JDK 目录:

mv jdk1.7.0_67/ jdk/

安装 Tomcat

首先,解压 Tomcat 程序包:

<1 wget http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.52/bin/apache-tomcat-7.0.52.tar.gz
<2 tar -zxf apache-tomcat-7.0.52.tar.gz

然后,重命名 Tomcat 目录:

mv apache-tomcat-7.0.55/ tomcat/

设置环境变量

首先,编辑.bashrc文件

vi ~/.bashrc

然后,在该文件末尾添加如下配置:

export JAVA_HOME=/opt/jdk
export PATH=$PATH:$JAVA_HOME

最后,需要使用source命令,让环境变量生效:

source ~/.bashrc

编写运行脚本

我们需要编写一个运行脚本,当启动容器时,运行该脚本,启动 Tomcat,具体过程如下:

首先,创建运行脚本:

vi /root/run.sh

然后,编辑脚本内容如下:

#!/bin/bash
source ~/.bashrc
sh /opt/tomcat/bin/catalina.sh run

注意:这里必须先加载环境变量,然后使用 Tomcat 的运行脚本来启动 Tomcat 服务。

最后,为运行脚本添加执行权限:

chmod u+x /root/run.sh

退出容器

当以上步骤全部完成后,可使用exit命令,退出容器。

随后,可使用如下命令查看正在运行的容器:

docker ps

此时,您应该看不到任何正在运行的程序,因为刚才已经使用exit命令退出的容器,此时容器处于停止状态,可使用如下命令查看所有容器:

docker ps -a

输出如下内容:

CONTAINER ID        IMAGE                             COMMAND             CREATED             STATUS                      PORTS               NAMES
57c312bbaad1        docker.cn/docker/centos:centos6   "/bin/bash"         27 minutes ago      Exited (0) 19 seconds ago                       naughty_goldstine

记住以上CONTAINER ID(容器 ID),随后我们将通过该容器,创建一个可运行 Java Web 的镜像。

创建 Java Web 镜像

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

docker commit 57c312bbaad1 huangyong/javaweb:0.1

该容器的 ID 是“57c312bbaad1”,所创建的镜像名是“huangyong/javaweb:0.1”,随后可使用镜像来启动 Java Web 容器。

启动 Java Web 容器

有必要首先使用docker images命令,查看当前所有的镜像:

REPOSITORY                TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
huangyong/javaweb         0.1                 fc826a4706af        38 seconds ago      562.8 MB
docker.cn/docker/centos   centos6             25c5298b1a36        7 weeks ago         215.8 MB

可见,此时已经看到了最新创建的镜像“huangyong/javaweb:0.1”,其镜像 ID 是“fc826a4706af”。正如上面所描述的那样,我们可以通过“镜像名”或“镜像 ID”来启动容器,与上次启动容器不同的是,我们现在不再进入容器的命令行,而是直接启动容器内部的 Tomcat 服务。此时,需要使用以下命令:

docker run -d -p 58080:8080 --name javaweb huangyong/javaweb:0.1 /root/run.sh

稍作解释:

  • -d:表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
  • -p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了 58080 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
  • --name:表示容器名称,用一个有意义的名称命名即可。

关于 Docker 网桥的内容,需要补充说明一下。实际上 Docker 在宿主机与容器之间,搭建了一座网络通信的桥梁,我们可通过宿主机 IP 地址与端口号来映射容器内部的 IP 地址与端口号,

在一系列参数后面的是“镜像名”或“镜像 ID”,怎么方便就怎么来。最后是“初始命令”,它是上面编写的运行脚本,里面封装了加载环境变量并启动 Tomcat 服务的命令。

当运行以上命令后,会立即输出一长串“容器 ID”,我们可通过docker ps命令来查看当前正在运行的容器。

CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS                     NAMES
82f47923f926        huangyong/javaweb:0.1   "/root/run.sh"      4 seconds ago       Up 3 seconds        0.0.0.0:58080->8080/tcp   javaweb

品尝

在浏览器中,输入以下地址,即可访问 Tomcat 首页:

http://192.168.65.132:58080/

注意:这里使用的是宿主机的 IP 地址,与对外暴露的端口号 58080,它映射容器内部的端口号 8080。

总结

通过本文,我们了解了 Docker 是什么?它与虚拟机的差别在哪里?以及如何安装 Docker?如何下载 Docker 镜像?如何运行 Docker 容器?如何在容器内安装应用程序?如何在容器上创建镜像?如何以服务的方式启动容器?这一切看似简单,但操作也是相当繁琐的,不过熟能生巧,需要我们不断地操练。

除了这种手工生成 Docker 镜像的方式以外,还有一种更像是写代码一样,可以自动地创建 Docker 镜像的方式。只需要我们编写一个 Dockerfile 文件,随后使用docker build命令即可完成以上所有的手工操作。

转载于:https://www.cnblogs.com/koliop090/p/5203599.html

Docker Java+Tomcat 环境搭建相关推荐

  1. Java开发环境搭建详解

    Java开发环境搭建详解  http://topic.csdn.net/u/20110829/13/BF4FAA45-3E1A-48A8-BC46-0405B7F862A2.html 一.jdk安装与 ...

  2. 【CentOS】 Nginx+jdk+tomcat 环境搭建

    CentOS  Nginx+jdk+tomcat 环境搭建 一.jdk安装 jdk下载地址:http://www.oracle.com/technetwork/java/javasebusiness/ ...

  3. Tomcat环境搭建与常见问题详解

    Tomcat环境搭建和常见问题详解 Tomcat介绍 环境搭建流程 配置Java 注意事项 下载Java 安装Java 配置环境变量 测试Java 配置Tomcat 下载Tomcat 安装Tomcat ...

  4. 初识Java以及JAVA开发环境搭建

    初识Java以及JAVA开发环境搭建 JAVA帝国的诞生 C&C++ JAVA JAVA特性和优势 JAVA三大版本 JDK.JRE.JVE JAVA开发环境搭建 JDK下载与安装.卸载 安装 ...

  5. Java开发环境搭建与实验教程(适合自学)

    Java开发环境搭建与实验教程 如何配置JAVA的环境变量 下载Java  JDK(JDK包含JRE.SDK是Software Development Kit 即软件开发工具包,可以包括函数库.编译程 ...

  6. Java Web环境搭建

    目录 Java Web 介绍 开发环境准备 兼容性问题 搭建环境 下载JDK 1.什么是jdk? 2.下载JDK的地址 环境变量配置 1.安装完成后,右击"此电脑",点击" ...

  7. JAVA入门·JAVA开发环境搭建之卸载JDK安装JDK

    JAVA开发环境搭建 卸载JDK 1.删除Java的安装目录 我的电脑--属性--高级系统设置--环境变量--系统变量--JAVA_HOME--Java的安装目录 2.删除JAVA_HOME 3.删除 ...

  8. 程序员福音 【完整的Java开发环境搭建】 系列篇

    原文地址 BY Jason 文章目录 原文地址 Java开发环境搭建 统一问题解决(更新中) 1. vim常用操作命令 2. 关于Linux防火墙开放端口问题 环境安装目录(更新中) Docker安装 ...

  9. java开发环境安装原理,java开发环境搭建 java开发环境的完整搭建过程

    想了解java开发环境的完整搭建过程的相关内容吗,Rosalh在本文为您仔细讲解java开发环境搭建的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:java开发环境搭建步骤,java开发环 ...

最新文章

  1. TDD, what, why, how
  2. hadoop三个配置文件的参数含义说明
  3. 外贸单证之信用证审核的18个要点
  4. RHEL7 yum源配置
  5. stm8s103k3 周期 捕获_STM8S103K3 - 主流基本型系列8位MCU,具有8 KB Flash、16 MHz CPU和集成EEPROM - STMicroelectronics...
  6. 团队网站 ,资料陆续更新中。
  7. ASP.NET MVC5 + EF6 入门教程 (6) View中的Razor使用
  8. ubuntu 常用快捷键、常用命令
  9. 中断、轮询、事件驱动、消息驱动、数据流驱动(Flow-Driven)?
  10. 洛谷 1563 玩具谜题——模拟水题
  11. python和java学哪个好-Python和Java两门编程语言,学习哪个更好?
  12. 问号匹配,带元组规则的位置匹配不到
  13. 双稳态电路的两个稳定状态是什么_干货 | 常见的脉冲电路到底有何用途和特点?终于了解了!...
  14. git rebase
  15. 阿里云盾(云安全)是什么?有什么作用?
  16. Docker 删除image
  17. Matlab的plot~各种颜色和线形
  18. 野田圣子、希尔顿、松下幸之助,都喝过马桶水吗? .
  19. DRV8301/8303代码讲解
  20. 【django】Windows下安装Redis

热门文章

  1. 【Oracle RAC故障分析与处理】
  2. 【题解】【数组】【Prefix Sums】【Codility】Genomic Range Query
  3. 配置Linux—LVS (DR)
  4. textarea换行符转换
  5. 自学问题 zx yl
  6. python06: 运算符. if
  7. Oracle多行函数
  8. 详细介绍如何在Eclipse中使用SVN
  9. jquery通过ajax向后台发送(checkbox)数组,并在后台接收,(发送的数据是checkedbox)...
  10. C#时间格式转换、日期操作函数、常用转换语法