详解docker镜像centos7配置Java运行环境

作者:lqh 时间:2022-03-14 04:44:37 

1.拉取centos镜像


docker pull centos:7

2.基于拉取到的镜像运行一个容器


docker run -it --name mycentos docker.io/centos:7 /bin/bash

运行起来就直接进入了容器的交互界面

3.容器中安装jdk

首先查询可用的jdk版本


yum search java|grep jdk

根据搜索到jdk进行安装


yum install java-1.7.0-openjdk

安装完成之后可以不用配置环境变量,因为安装完成之后貌似是自动配置好了 使用命令测试jdk是否安装成功


java -version

如果正常显示jdk的版本号说明安装成功,然后使用 exit直接退出容器到宿主机

4.安装tomcat

从官网手动下载tomcat的tar包; 下载完成的文件如: apache-tomcat-7.0.78.tar.gz 将该文件首先上传到宿主机;可以用FTP等方式,上传完成后将tomcat包拷贝到docker容器; 拷贝命令:


docker cp /apache-tomcat-7.0.78.tar.gz mycentos:/usr

上面的命令是将tomcat包拷贝到名为mycentos容器的usr目录下

5.在容器中制作tomcat启动脚本

进入已经运行的容器


docker exec -it mycentos /bin/bash

创建文件


touch /root/run.sh

编辑文件


vi /root/run.sh

输入文件内容,保存退出


#!/bin/bash
exprot JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.141-2.6.10.1.el7_3.x86_64/
export PATH=$JAVA_HOME/bin:$PATH
sh /usr/tomcat/bin/catalina.sh run

JAVA_HOME:jdk的存放目录,默认为上面命令中的
PATH:不用解释了
sh:指定tomcat真实启动的catalina.sh脚本
给run.sh添加权限


chmod u+x /root/run.sh

授权完成之后退出容器;使用exit命令退出到宿主机

6.制作tomcat镜像


docker commit mycentos mytomcat:7

将mycentos容器提交的镜像仓库,镜像名称为mytomcat,版本号为:7

7.用制作好的tomcat镜像启动一个tomcat容器


docker run -d --name tomcat1 -p 5001:8080 mytomcat:7 /root/run.sh

使用docker ps可以查看容器是否启动成功 -d:表示以守护进程方式启动 --name:指定容器的名称 -p:将tomcat 8080端口映射到宿主机的5001端口 mytomcat:7:上一步制作好的tomcat镜像

8.浏览器访问


http://宿主机ip:5001

问题1:如何进入一个正在运行的容器


docker exec -it tomcat1 /bin/bash

问题2:如何部署项目到tomcat


docker cp /ROOT.war tomcat1:/usr/tomcat/webapps

直接在宿主机拷贝Jar包到容器中的tomcat webapps目录下

问题3:怎么设置docker容器的时区


cp /usr/share/zoneinfo/PRC /etc/localtime

直接在容器中执行上面的命令,执行完成后用date命令查看容器时间是否和当前时间一样

问题4:怎么设置tomcat的时区


export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+08"

在tomcat/bin/catalina.sh文件中的第一行添加上面的代码;因为容器中的tomcat与真实的时间差8小时,是时区不一致导致的问题;设置完成后保存退出,然后重启容器就可以看到时间一样了

问题5:怎么重启容器

停止容器


docker stop tomcat1

启动容器


docker start tomcat1

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

来源:https://my.oschina.net/ht896632/blog/906937

标签:docker,centos7,Java
0
投稿

猜你喜欢

  • Java常用排序算法及性能测试集合

    2022-01-15 22:29:09
  • springboot整合微信支付sdk过程解析

    2021-12-30 22:47:29
  • Android实现上传文件功能的方法

    2022-01-18 11:01:02
  • java的接口解耦方式

    2023-04-17 00:36:45
  • Unity3D生成一段隧道网格的方法

    2022-02-22 23:46:27
  • Java图形用户界面设计(Swing)的介绍

    2022-08-23 03:29:37
  • Spring源码解析之Configuration

    2021-11-01 06:05:04
  • Android开发手册TextInputLayout样式使用示例

    2023-10-16 11:03:12
  • 详解C# FileStream类

    2022-10-19 13:44:27
  • Mybatis Plugin拦截器开发过程详解

    2021-07-15 22:30:18
  • 如何实现自定义SpringBoot的Starter组件

    2023-06-28 14:49:04
  • Android开发者需要知道的8个项目管理技巧

    2022-04-11 19:51:02
  • Spring Security 实现短信验证码登录功能

    2022-11-02 19:39:30
  • Android自定义View实现垂直时间轴布局

    2022-12-12 15:21:16
  • Java泛型通配符的使用详解

    2022-07-08 14:08:43
  • Java中synchronized的几种使用方法

    2023-06-19 16:33:28
  • Android 开发中layout下的子文件夹

    2021-10-03 16:10:44
  • Maven的porfile与SpringBoot的profile结合使用案例详解

    2023-11-14 00:07:59
  • JAVA基础之注解与反射的使用方法和场景

    2022-02-23 19:50:00
  • Android的OkHttp包中的HTTP拦截器Interceptor用法示例

    2022-01-31 06:31:25
  • asp之家 软件编程 m.aspxhome.com