zoukankan      html  css  js  c++  java
  • Docker部署JavaWeb项目实战

          林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka

             摘要:本文主要讲了怎样在Ubuntu14.04 64位系统下来创建一个执行Java web应用程序的Docker容器。


    一、下载镜像、启动容器

    1、下载镜像

    先查看镜像

    docker images

    记住这个Image ID,下面我们启动容器须要用到它。


    假设看到以上输出,说明您能够使用“oursuer/ubuntu”这个镜像了,或将其称为仓库(Repository)。该镜像有一个名为“14.04”的标签(Tag),此外另一个名为
    1f879014f4d2 的镜像 ID(可能您所示镜像 ID 与此处的不一致,那是正常现象,由于这个数字是随机生成的)。此外,我们能够看到该镜像仅仅有188.4 MB,很小巧,而不像虚拟机的镜像文件那样庞大。
    如今镜像已经有了,我们下面就须要使用该镜像,来启动容器。

    2、启动容器

    容器是在镜像的基础上来执行的,一旦容器启动了,我们就能够登录到容器中,安装自己所需的软件或应用程序。既然镜像已经下载到本地。那么怎样才干启动容器呢?
    仅仅需使用下面命令就可以启动容器:

    docker run -i -t -v /download/:/mnt/software/ 1f879014f4d2 /bin/bash

    这条命令比較长。我们略微分解一下,事实上包括下面三个部分:
    docker run <相关參数> <镜像 ID> <初始命令>
    假设看到以上输出。说明您能够使用“docker.cn/docker/centos”这个镜像了,或将其称为仓库(Repository),该镜像有一个名为“centos6”的标签(Tag),此外另一个名为“25c5298b1a36 ”的镜像 ID(可能您所示镜像 ID 与此处的不一致,那是正常现象。由于这个数字是随机生成的)。此外,我们能够看到该镜像仅仅有 215.8 MB,很小巧,而不像虚拟机的镜像文件那样庞大。


    如今镜像已经有了。我们下面就须要使用该镜像,来启动容器。

    当中。相关參数包括:
    -i:表示以“交互模式”执行容器
    -t:表示容器启动后会进入其命令行
    -v:表示须要将本地哪个文件夹挂载到容器中,格式:-v <宿主机文件夹>:<容器文件夹>

    假设我们的全部安装程序都放在了宿主机的/download/文件夹下,如今须要将其挂载到容器的/mnt/software/文件夹下。
    须要说明的是,不一定要使用“镜像 ID”。也能够使用“仓库名:标签名”。比如:oursuer/ubuntu:14.04。
    初始命令表示一旦容器启动。须要执行的命令,此时使用“/bin/bash”,表示什么也不做,仅仅需进入命令行就可以。


    退出容器使用Ctrl+d或输入exit

    假设退出容器后,能够再次使用命令(注意,得先执行docker run之后然后被stop掉的容器才干够使用例如以下命令)

    docker start 容器ID

    当中容器ID。

    使用命令docker ps -a来看。例如以下:


    然后再次启动已启动过但如今是关闭的容器

    docker start sick_mestorf
    这个命令仅仅会启动容器,不会进入容器。要进入容器得用命令

    docker attach 容器ID或容器名

    例如以下:



    二、安装相关软件

    首先先将JDK和tomcat的安装包.gz文件放在外面的/download文件夹下


    然后再次启动容器。

    进入容器


    然后看看是否有安装包。发现两个都在了,下面能够安装了


    1、安装JDK

    直接使用

    cd /usr
    mkdir java
    cd java
    mkdir jdk
    cd /mnt/software/
    tar zxvf jdk-8u65-linux-x64.gz -C /usr/java/jdk
    这里直接接文件解压到/usr/java/jdk文件夹。例如以下

    配置环境变量
    输入:

    vi /etc/profile

    加入例如以下内容:
    #set java environment 
    export JAVA_HOME=/usr/java/jdk/jdk1.8.0_65 
    export JRE_HOME=/usr/java/jdk/jdk1.8.0_65/jre 
    export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH 
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH 

      
    注意此处改成相应的jdk的文件夹,而且要以root用户来做改动,否则无法保存
    保存后执行:
    source /etc/profile 
    验证安装:
    输入:
    java -version 

    假设出现例如以下内容,说明成功安装

    2、tomcat安装

    直接解压

    cd /usr/java
    mkdir tomcat
    tar zxvf  -C /usr/java/tomcat
    配置环境
    进入到上面的tomcat的bin文件夹下:

    打开

    vi setclasspath.sh

    gedit setclasspath.sh
    加入例如以下内容:

    export JAVA_HOME=/usr/java/jdk/jdk1.8.0_65 
    export JRE_HOME=/usr/java/jdk/jdk1.8.0_65/jre 

    保存就可以。

    然后退回到bin文件夹下:

    执行:

     ./startup.sh

    说明tomcat启动成功

    或者使用例如以下命令查看:



    三、配置容器启动环境变量

    (上面的JDK配置环境变量能够不要,可是这里的一定要写!!!

    !。!!!!

    由于这里是设置容器启动时载入的环境变量)

    1、环境变量设置

    首先,编辑.bashrc文件

    vi ~/.bashrc
    然后,在该文件末尾加入例如以下配置:
    export JAVA_HOME=/usr/java/jdk/jdk1.8.0_65 
    export JRE_HOME=/usr/java/jdk/jdk1.8.0_65/jre 
    export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH 
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH 
    最后。须要使用source命令。让环境变量生效:
    source ~/.bashrc

    2、编写执行脚本


    我们须要编写一个执行脚本,当启动容器时,执行该脚本,启动 Tomcat,详细步骤例如以下:
    首先,创建执行脚本:

    vi /root/run.sh
    然后,编辑脚本内容例如以下:
    #!/bin/bash
    source ~/.bashrc
    sh /usr/java/tomcat/apache-tomcat-7.0.68/bin/catalina.sh run
    注意:这里必须先载入环境变量,然后使用 Tomcat 的执行脚本来启动 Tomcat 服务。


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

    chmod u+x /root/run.sh


    3、退出容器

    当以上步骤全部完毕后,可使用exit或ctrl+d命令,退出容器。
    随后,可使用例如以下命令查看正在执行的容器:
    docker ps
    此时,您应该看不到不论什么正在执行的程序。由于刚才已经使用exit命令退出的容器,此时容器处于停止状态,可使用例如以下命令查看全部容器:
    docker ps -a
    输出例如以下内容:

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


    四、创建 Java Web 镜像

    使用下面命令,依据某个“容器 ID”来创建一个新的“镜像”:
    docker commit 89a47b5b749e  lin_javaweb:0.1
    该容器的 ID 是“89a47b5b749e”,所创建的镜像名是“lin_javaweb:0.1”。随后可使用镜像来启动 Java Web 容器。

    这是创建成功后

    相同能够查看下镜像



    五、启动 Java Web 容器

    有必要首先使用docker images命令,查看当前全部的镜像:
    可见。此时已经看到了最新创建的镜像“lin_javaweb:0.1”,其镜像 ID 是“4487bd38df06”。正如上面所描写叙述的那样,我们能够通过“镜像名”或“镜像 ID”来启动容器,与上次启动容器不同的是,我们如今不再进入容器的命令行。而是直接启动容器内部的 Tomcat 服务。此时,须要使用下面命令:
    docker run -d -p 58080:8080 --name javaweb lin_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命令来查看当前正在执行的容器。


    在浏览器中,输入下面地址,就可以訪问 Tomcat 首页:
    http://127.0.0.1:58080/

    或者

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



  • 相关阅读:
    Robot Framework--06 用户关键字User Keyword
    Robot Framework--05 案例设计之流程与数据分离
    Robot Framework--04 工作区
    Robot Framework--03 案例及资源区
    Robot Framework--02 菜单栏&工具栏
    Robot Framework--01 创建简单工程示例
    uoj#35 后缀排序(后缀数组模版)
    【学习笔记】动态树Link-Cut-Tree
    【随意学学】三分法
    【学习笔记】dsu on tree
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7061028.html
Copyright © 2011-2022 走看看