摘要:本文主要讲了怎样在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 假设看到以上输出。说明您能够使用“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。

java应用部署docker_Docker部署JavaWeb项目实战相关推荐

  1. 新一代微服务全家桶AlibabaCloud+Docker+JDK11阿里云容器部署零基础到项目实战

    新一代微服务全家桶AlibabaCloud+Docker+JDK11阿里云容器部署零基础到项目实战 近年来,微服务架构已经成为企业标配,它以更加灵活的部署方式和高度解耦的架构设计,为企业带来了极大的业 ...

  2. ✨JavaWeb项目:实战亲自动手手敲上线小项目部分功能的第一天✨

    系列链接: ✨JavaWeb项目实战亲自动手手敲上线小项目的第一天✨ ✨JavaWeb项目实战亲自动手手敲上线小项目的第二天✨ ✨JavaWeb项目实战亲自动手手敲上线小项目的第三天✨ ✨JavaWe ...

  3. 【JavaWeb】JavaWeb项目实战——品牌后台管理系统

    JavaWeb项目实战--品牌后台管理系统 项目概述 功能介绍 成果展示 项目实现 使用Maven构建项目 Maven介绍 具体操作 使用Mybatis封装对数据库的操作 在Mysql中建表,并添加数 ...

  4. Javaweb-初识(Tomcat服务部署、创建Javaweb项目、Servlet Post请求案例)

    文章目录 Tomcat Tomcat服务器概述 安装 idea配置tomcat 创建Javaweb项目 idea创建项目 目录结构 Servlet post请求案例 问题解决 HTTP协议和HTTPS ...

  5. (一)专题介绍:移动端安卓手机改造成linux服务器linux服务器中安装软件、部署前后端分离项目实战

    快捷目录 前言 一.涉及到的相关技术简介 二.具体实现过程及踩坑杂谈 1.安卓手机改造成linux系统实现方案 2.改造后的手机Linux中软件的安装 3.手机Linux中安装MySQL5.7踩坑实录 ...

  6. 腾讯云轻量级应用服务器部署并运行JavaWeb项目

    今天博主心血来潮,想要搭建一个服务器来将自己做的项目部署到上面去,之前博主曾经买过腾讯云的服务器,当时使用的学生身份,很便宜,然后想着再买一个,但由于其限定只能买一个,万般无奈下(就是没钱)发现腾讯云 ...

  7. java区块链_JAVA区块链项目实战

    课程介绍 全国首套,基于java的区块链实战教程.目的是让更多的java编程者了解区块链,掌握区块链开发. 1.区块链理论:以node.js例子区块链原理有深刻理解: 2.区块链java实战:深刻理解 ...

  8. java 搜索业务怎么写_Java项目实战第11天:搜索功能的实现

    原标题:Java项目实战第11天:搜索功能的实现 今天是刘小爱自学Java的第110天. 感谢你的观看,谢谢你. 话不多说,开始今天的学习: 事先说明:关于今天的搜索功能实现. 并没有使用到倒排索引这 ...

  9. java窗体添加背景图片_Java项目实战之实战之天天酷跑(四):游戏主界面

    接上文,本文将实现游戏主界面,功能如下: 移动的背景图片.动态的玩家.玩家的移动功能.五种障碍物持续出现.玩家和障碍物的碰撞.暂停.继续功能. 首先,看一下整体效果: 动图实在太大,几秒钟的 Gif ...

  10. javaweb项目实战(附有源码)

    这个代码是我做微信小程序的时候,专门用java做的web项目,主要是为前端提供接口,便于前端调用数据 如果有想要参考javaweb项目如何做的小伙伴,可以到github上下载,github上有前端和后 ...

最新文章

  1. scrapy 6023 telnet查看爬虫引擎相关状态
  2. whoami,who,w命令详解
  3. .net通过获取客户端IP地址反查出用户的计算机名
  4. 网络安全法今日实施 互联网企业对隐私政策重视不足
  5. web app会遇到那些问题
  6. ubuntu 终端内查找/搜索
  7. P1268-树的重量【图论】
  8. Log4J 1.x 配置详解
  9. php sql判断l列的存在,thinkphp 模块不存在:404
  10. [Tools 之]online bookmark 在线书签
  11. 如何在mac中使用downie下载视频?
  12. Java如何进行Base64的编码(Encode)与解码(Decode)
  13. Project(8)——收货地址——增加 --- 省市区数据处理
  14. 计算机应用基础电子教案吉林,中等职业学校计算机应用基础课程改革初探.doc...
  15. PicGo搭建Gitee图库
  16. python读取excel画折线图_Python读取Excel表格,并同时画折线图和柱状图
  17. 智能家居弱电布线设计注意事项
  18. 用Python写糖豆人小游戏 你学“废”了么?
  19. comparison of VLIW and superscaler
  20. 免费一年VPS,digitalocean加上GitHub学生包

热门文章

  1. Java 9模块服务
  2. 惯用并发:flatMap()与parallel()– RxJava常见问题解答
  3. 微服务系列:MicroProfile和Apache TomEE
  4. 2016年成功的Java开发人员简介
  5. 如何使用Java 8 FlatMap JDBC ResultSet?
  6. 在AWS Elastic MapReduce上运行PageRank Hadoop作业
  7. Dropwizard:轻松的RESTful JSON HTTP Web服务
  8. 使用JUnit和Repeat注​​释编写有效的负载测试
  9. Java 7:使用NIO.2进行文件过滤-第1部分
  10. 用于Spring应用程序的Gradle原型