Docker部署JavaWeb项目实战(转)

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

一、下载镜像、启动容器

1、下载镜像

先查看镜像

[html] view plain copy

  1. docker images

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

2、启动容器

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

[plain] view plain copy

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

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

[html] view plain copy

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

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

[plain] view plain copy

  1. 其中,相关参数包括:
  2. -i:表示以“交互模式”运行容器
  3. -t:表示容器启动后会进入其命令行
  4. -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

假设我们的所有安装程序都放在了宿主机的/download/目录下,现在需要将其挂载到容器的/mnt/software/目录下。
需要说明的是,不一定要使用“镜像 ID”,也可以使用“仓库名:标签名”,例如:oursuer/ubuntu:14.04。
初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。

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

如果退出容器后,可以再次使用命令(注意,得先运行docker run之后然后被stop掉的容器才可以使用如下命令)

[plain] view plain copy

  1. docker start 容器ID

其中容器ID。使用命令docker ps -a来看,如下:

然后再次启动已启动过但现在是关闭的容器

[plain] view plain copy

  1. docker start sick_mestorf

这个命令只会启动容器,不会进入容器。要进入容器得用命令

[plain] view plain copy

  1. docker attach 容器ID或容器名

如下:

二、安装相关软件

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

然后再次启动容器。进入容器

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

1、JDK安装

直接使用

[plain] view plain copy

  1. cd /usr
  2. mkdir java
  3. cd java
  4. mkdir jdk
  5. cd /mnt/software/
  6. tar zxvf jdk-8u65-linux-x64.gz -C /usr/java/jdk

这里直接接文件解压到/usr/java/jdk目录,如下

配置环境变量
输入:

[plain] view plain copy

  1. vi /etc/profile


添加如下内容:

[plain] view plain copy

  1. #set java environment
  2. export JAVA_HOME=/usr/java/jdk/jdk1.8.0_65
  3. export JRE_HOME=/usr/java/jdk/jdk1.8.0_65/jre
  4. export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
  5. export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH

注意此处改成对应的jdk的目录,并且要以root用户来做修改,否则无法保存
保存后执行:

[plain] view plain copy

  1. source /etc/profile

验证安装:
输入:

[plain] view plain copy

  1. java -version

如果出现如下内容,说明安装成功

2、tomcat安装

直接解压

[html] view plain copy

  1. cd /usr/java
  2. mkdir tomcat
  3. tar zxvf  -C /usr/java/tomcat

配置环境
进入到上面的tomcat的bin文件夹下:

打开

[plain] view plain copy

  1. vi setclasspath.sh

[plain] view plain copy

  1. gedit setclasspath.sh

添加如下内容:

[plain] view plain copy

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

保存即可。

然后退回到bin目录下:

执行:

[plain] view plain copy

  1. ./startup.sh

说明tomcat启动成功

或者使用如下命令查看:

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

(上面的JDK配置环境变量可以不要,但是这里的一定要写!!!!!!!!!!因为这里是设置容器启动时加载的环境变量)

1、设置环境变量

首先,编辑.bashrc文件

[plain] view plain copy

  1. vi ~/.bashrc

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

[plain] view plain copy

  1. export JAVA_HOME=/usr/java/jdk/jdk1.8.0_65
  2. export JRE_HOME=/usr/java/jdk/jdk1.8.0_65/jre
  3. export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
  4. export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH

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

[plain] view plain copy

  1. source ~/.bashrc

2、编写运行脚本

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

[html] view plain copy

  1. vi /root/run.sh

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

[html] view plain copy

  1. #!/bin/bash
  2. source ~/.bashrc
  3. sh /usr/java/tomcat/apache-tomcat-7.0.68/bin/catalina.sh run

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

[html] view plain copy

  1. chmod u+x /root/run.sh

3、退出容器

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

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

四、创建 Java Web 镜像

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

[plain] view plain copy

  1. 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 服务。此时,需要使用以下命令:

[plain] view plain copy

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

稍作解释:

[html] view plain copy

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

关于 Docker 网桥的内容,需要补充说明一下。实际上 Docker 在宿主机与容器之间,搭建了一座网络通信的桥梁,我们可通过宿主机 IP 地址与端口号来映射容器内部的 IP 地址与端口号,
在一系列参数后面的是“镜像名”或“镜像 ID”,怎么方便就怎么来。最后是“初始命令”,它是上面编写的运行脚本,里面封装了加载环境变量并启动 Tomcat 服务的命令。
当运行以上命令后,会立即输出一长串“容器 ID”,我们可通过docker ps命令来查看当前正在运行的容器。

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

或者

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

http://blog.csdn.net/evankaka/article/details/50722788

时间: 2024-10-05 07:57:23

Docker部署JavaWeb项目实战(转)的相关文章

Docker部署JavaWeb项目实战

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何在Ubuntu14.04 64位系统下来创建一个运行Java web应用程序的Docker容器. 一.下载镜像.启动容器 1.下载镜像 先查看镜像 docker images 记住这个Image ID,下面我们启动容器需要用到它.如果看到以上输出,说明您可以使用"oursuer/ubuntu"这个镜像了,或将其称为仓库(Repository),该镜像有一个名为

使用Docker部署JavaWeb项目

首先准备一台Centos 7的虚拟机并安装Docker. docker成功安装 配置国内镜像 vi /etc/docker/daemon.json { "registry-mirrors" : ["https://3laho3y3.mirror.aliyuncs.com"] } 重启服务 sudo service docker restart 国内加速站点https://registry.docker-cn.comhttp://hub-mirror.c.163.co

【转载】centos7+tomcat部署JavaWeb项目超详细步骤

我们平时访问的网站大多都是发布在云服务器上的,比如阿里云.腾讯云等.对于新手,尤其是没有接触过linux系统的人而言是比较有困难的,而且至今使用云服务器也是有成本的,很多时候我们可以通过虚拟机自己搭建一个测试服务器来运行我们的javaWeb项目.这里我就从头到尾开始详细的介绍一下如何部署javaWeb项目到centos7上. 总体分为三部分:1.java环境.2.tomcat环境.3.JavaWeb项目部署 一.安装java环境 centos7安装java环境比较简单,我是通过virtualBo

Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包

Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ©Copyright 蕃薯耀 2017年3月6日 http://www.cnblogs.com/fanshuyao/ 一.Linux快速部署W

关于docker部署javaweb应用的问题

我做了两个镜像,一个mysql,一个tomcat.建完mysql容器之后,在建tomcat的时候用--link把他们链接起来了进tomcat的容器里面 /etc/hosts 也发现了mysql的ip但是,我不知道我的tomcat里面的程序怎么新建数据库连接db_url应该是什么 关于docker部署javaweb应用的问题 >> mysql 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/mysql/1010000007434275/关于docker部署

Docker容器和本机之间的文件传输 使用Docker部署Tomcat项目

Docker容器和本机之间的文件传输. http://blog.csdn.net/leafage_m/article/details/72082011 使用Docker部署Tomcat项目 http://blog.csdn.net/leafage_m/article/details/72081987

redhat7学习笔记之从零到部署javaweb项目

REDHAT7学习笔记 1. 安装vmware10 安装过程略,下载地址:链接: https://pan.baidu.com/s/16odKKkRYBxGWDVo1cz_wxA 注意,10以上版本不在支持32位,只有10这个版本支持32位同时支持redhat7  64位 2.下载Redhat7  64位 地址:链接: https://pan.baidu.com/s/1NLtT9wuwZDo5IdU33oWCxA 3.查看ip Pifconfig: 在命令行中输入ifconfig是没有用的, 在R

Docker 部署Django项目

使用docker部署django项目也很简单,挺不错,分享下 环境 默认你已安装好docker环境 django项目大概结构 (p3s) [[email protected]]# tree opsweb opsweb ├── apps ├── logs ├── manage.py ├── media ├── opsweb ├── README.md ├── requirements.txt └── static 编写Dockerfile 这里指定 Python 版本为docker官方提供的 "0

宝塔面板快速部署JavaWeb项目

*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin: 15px 0; } /* HEAD