centos + docker部署web java项目

简介: 1,系统准备 CentOS 具体要求如下: 必须是 64 位操作系统 建议内核在 3.8 以上 通过以下命令查看您的 CentOS 内核: [root@VM_200_249_centos ~]# uname -r 3.10.0-327.36.3.el7.x86_64 对于 CentOS 6.5 而言,内核版本默认是 2.6。

1,系统准备

CentOS 具体要求如下:

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

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

[root@VM_200_249_centos ~]# uname -r
3.10.0-327.36.3.el7.x86_64

对于 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或shutdown now命令重启操作系统。
重启后如果不出意外的话,再次查看内核,您的 CentOS 内核将会显示为 3.10。

2,安装Docker

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

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

可通过以下命令启动 Docker 服务:

service docker start
chkconfig docker on # 设置开机启动

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

[root@VM_200_249_centos ~]# docker version
Client:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:
 OS/Arch:      linux/amd64

若输出了 Docker 的版本号,则说明安装成功,我们下面就可以开始使用 Docker 了。

3, 安装镜像

Docker 官网 提供了所有的镜像下载地址
直接pull下来(https://hub.docker.com/r/nimmis/java-centos/)

docker pull nimmis/java-centos

可以通过对应的标签选择不同的jdk版本,例如"docker pull nimmis/java-centos:openjdk-7-jdk"

  • latest - currently Oracle Java version 8 JRE
  • openjdk-7-jdk - OpenJDK Java version 7 JDK
  • openjdk-7-jre - OpenJDK Java version 7 JRE
  • openjdk-7-jre-headless - OpenJDK Java version 7 JRE headless
  • openjdk-8-jdk - OpenJDK Java version 8 JDK
  • openjdk-8-jre - OpenJDK Java version 8 JRE
  • openjdk-8-jre-headless - OpenJDK Java version 8 JRE headless
  • oracle-7-jre - Oracle Java version 7 JRE
  • oracle-7-jdk - Oracle Java version 7 JDK
  • oracle-8-jre - Oracle Java version 8 JRE
  • oracle-8-jdk - Oracle Java version 8 JDK

镜像加速器

docker官网的镜像下载非常慢,国内提供了Docker镜像的下载点,如阿里、网易和DaoCloud。以阿里云为例:
需要先注册阿里云账号,进入:

https://cr.console.aliyun.com/#/accelerator

选择左侧“加速器”,找到你的专属加速器地址


img_dc8b46970fff62f0a1c9a206ed6a64d4.png

在centos下修改/etc/docker/daemon.json文件,添加:

{
    "registry-mirrors": ["https://yxz1pr3x.mirror.aliyuncs.com"]
}

设置后能获得每秒1兆的下载速度。

最后,使用以下命令查看本地所有的镜像:

[root@VM_200_249_centos ~]# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
dockerxman/docker-centos     latest              4c89ecb22b17        2 minutes ago       395.6 MB
daocloud.io/library/centos   latest              67591570dd29        10 weeks ago        191.8 MB

可以看到,系统中有2个docker镜像,“dockerxman/docker-centos”,也可以
称其为仓库(Repository),镜像的标签(Tag)为lastest,此外还有镜像ID(IMAGE ID),大小有395兆。

4,启动容器

容器在镜像的基础上运行,一旦容器启动了,我们就可以登录到容器中,安装自己所需的软件或应用程序。

docker run -i -t -v /mydata/data:/mnt/software --restart=always 67591570dd29 /bin/bash

命令解释:

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

其中,相关参数包括:

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

初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。
需要说明的是,不一定要使用“镜像 ID”,也可以使用“仓库名:标签名”,例如:dockerxman/docker-centos:latest。

查看所有创建的容器

docker ps -a

查看正在运行的容器

[root@VM_200_249_centos ~]# docker ps
CONTAINER ID        IMAGE                COMMAND             CREATED             STATUS              PORTS                     NAMES
a197e23e0ddb        asy:0.1   "/root/run.sh"      24 hours ago        Up 24 hours         0.0.0.0:58080->8080/tcp   javaweb

启动容器

docker start <CONTAINER ID>

停止容器

docker stop <CONTAINER ID>

重新进入已创建的容器

docker attach <CONTAINER ID>

docker exec -it <CONTAINER ID> /bin/bash

http://blog.csdn.net/u010397369/article/details/41045251

删除容器

docker rm <CONTAINER ID>

删除镜像

docker rmi <IMAGE ID>

注:需要先把镜像生成的容器全部删除才能删掉镜像。

5,安装软件

由于我们选择的镜像是包含JDK的,所以我们只需要安装tomcat。
tomcat我放在服务器上,用wget下载到容器中。

wget http://kekefund.com/soft/apache-tomcat-7.0.63.tar.gz

将tomcat放到/opt目录下,先移到到/opt目录,然后解压

cd /opt
tar -zxf /mnt/software/apache-tomcat-7.0.63.tar.gz -C .

重命名

mv apache-tomcat-7.0.63/ tomcat/

6,运行脚本

创建运行脚本:vi /root/run.sh

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

为运行脚本添加执行权限

chmod u+x /root/run.sh

7, 创建 Java Web 镜像

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

docker commit d50f5048e212 chenbb/javaweb:0.1

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

8, 启动 Java Web 容器

通过docker images查看所有镜像

[root@VM_200_249_centos ~]# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
chenbb/javaweb               0.1                 99e35759d5ed        24 hours ago        700 MB
dockerxman/docker-centos     latest              4c89ecb22b17        26 hours ago        395.6 MB
daocloud.io/library/centos   latest              67591570dd29        10 weeks ago        191.8 MB

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

docker run -d -p 58080:8080 --name javaweb --restart=always chenbb/javaweb:0.1 /root/run.sh

参数介绍:

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

9,浏览器查看

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

10,镜像打包

打包后就可以移植到其他主机上运行了。
打包:

docker save chenbb/fofeasy:0.1 > /mydata/data/fofeasy0.1.tar

11,在另外的主机上导入镜像

docker load < fofeasy0.1.tar   #导入镜像
docker images   #查看存在的镜像

参考

1,迈出使用Docker的第一步,学习第一个Docker容器
2,使用 Docker 搭建 Java Web 运行环境
3,使用 Docker 运行 Tomcat + WAR 包 Java 应用
4,docker的安装以及jdk和tomcat的环境配置
5,运维人员的解放----Docker快速部署

目录
相关文章
|
5天前
|
前端开发 JavaScript
构建你的第一个Web应用:从零到部署
【8月更文挑战第33天】 在这篇文章中,我们将一起踏上构建一个基本Web应用的旅程。不同于传统的“安装这个、运行那个”教程,我们的目标是通过理解每一步的意义和目的来深化你的技术理解。我们将探索HTML、CSS、JavaScript的基础,并学习如何将它们结合起来创建一个简单的个人网站。接着,我们会介绍如何使用GitHub Pages进行免费部署,让你的应用上线。准备好了吗?让我们开始吧!
|
2天前
|
负载均衡 网络协议 应用服务中间件
web群集--rocky9.2源码部署nginx1.24的详细过程
Nginx 是一款由 Igor Sysoev 开发的开源高性能 HTTP 服务器和反向代理服务器,自 2004 年发布以来,以其高效、稳定和灵活的特点迅速成为许多网站和应用的首选。本文详细介绍了 Nginx 的核心概念、工作原理及常见使用场景,涵盖高并发处理、反向代理、负载均衡、低内存占用等特点,并提供了安装配置教程,适合开发者参考学习。
|
5天前
|
SQL 安全 数据库
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
24 1
|
7天前
|
Java UED 自然语言处理
Struts 2 国际化竟有如此神奇魔力?快来揭开多语言支持的 Web 应用神秘面纱
【8月更文挑战第31天】在全球化背景下,Web应用需适应多种语言环境。Struts 2凭借其强大的国际化(i18n)支持,简化了多语言应用开发。通过不同语言的资源文件,它能自动匹配用户语言偏好,优化用户体验并扩展用户群。下面是一个示例:创建`messages.properties`(英语)与`messages_zh_CN.properties`(中文),并在Struts 2的Action类及JSP页面中调用`getText()`方法及Struts标签展示相应语言内容。此外,在struts.xml中指定资源文件,以确保框架正确加载对应语言包。通过这些步骤,开发者可以轻松实现应用的多语言支持。
28 0
|
7天前
|
Java 数据库 API
JSF与JPA的史诗级联盟:如何编织数据持久化的华丽织锦,重塑Web应用的荣耀
【8月更文挑战第31天】JavaServer Faces (JSF) 和 Java Persistence API (JPA) 分别是构建Java Web应用的用户界面组件框架和持久化标准。结合使用JSF与JPA,能够打造强大的数据驱动Web应用。首先,通过定义实体类(如`User`)和配置`persistence.xml`来设置JPA环境。然后,在JSF中利用Managed Bean(如`UserBean`)管理业务逻辑,通过`EntityManager`执行数据持久化操作。
14 0
|
7天前
|
开发者 安全 SQL
JSF安全卫士:打造铜墙铁壁,抵御Web攻击的钢铁防线!
【8月更文挑战第31天】在构建Web应用时,安全性至关重要。JavaServer Faces (JSF)作为流行的Java Web框架,需防范如XSS、CSRF及SQL注入等攻击。本文详细介绍了如何在JSF应用中实施安全措施,包括严格验证用户输入、使用安全编码实践、实施内容安全策略(CSP)及使用CSRF tokens等。通过示例代码和最佳实践,帮助开发者构建更安全的应用,保护用户数据和系统资源。
17 0
|
6天前
|
数据库 开发者 Python
web应用开发
【9月更文挑战第1天】web应用开发
20 1
|
3天前
|
数据采集 Java 数据挖掘
Java IO异常处理:在Web爬虫开发中的实践
Java IO异常处理:在Web爬虫开发中的实践
|
5天前
|
前端开发 JavaScript 持续交付
Web应用开发的方法
Web应用开发的方法
7 1
|
5天前
|
前端开发 JavaScript 持续交付
web应用开发
web应用开发
10 1
下一篇
DDNS