1.部署思路

两台docker机(centos 7系统),Docker 版本:18.09.6, build 481bc77156

Docker host IP:192.168.102.135

Docker client IP:192.168.102.134

在centos host上部署dokcer,并在docker容器中部署tomcat及jdk、webapp,部署后测试通过,并推入私有仓库。docker client端从私有仓库拉取镜像,运行并查看运行结果。操作示意图如下:

2.安装tomcat

docker pull tomcat
docker run -p 8080:8080 --name mytomcat tomcat:latest # 提取镜像,生成容器,并命名容器为:mytomcat

3.安装jdk

在Oracle 官网下载jdk,通过工具上传到centos 7中,然后拷贝到容器中,命令如下:

docker cp *****.gz mytomcat:/root

拷贝成功后,使用如下命令,进入容器mytomcat:

docker exec -it mytomcat bash

然后用cd ~切换到到root目录下,然后新建目录:/usr/local/java,并将jdk拷贝到此目录下,使用tar命令解压,解压完成后,配置系统路径:

vi ~/.bashrc

如果此时提示vi命令找不到,则需要运行以下命令,安装vi.

apt-get update#安装vi
apt-get install vim

有了次软件后,打开.bashrc文件,并在其中添加如下两行:

export JAVA_HOME=/usr/local/java/jdk1..0_211
export PATH=$JAVA_HOME/bin:$PATH

刷新配置:source ~/.bashrc,并用java -version测试是否安装成功。

3.部署web应用

上传war包,并传入mytomcat容器中。注意,拷贝命令是:docker cp ibweb.war 97430ad8c4ba:/usr/local/tomcat/webapps,而非:docker cp ibweb.war 97430ad8c4ba:/webapps

然后使用命令重启容器,以测试war包发布

docker restart mytomcat

或者命令:

docker stop mytomcat
docker start mytomcat

测试通过后,将此容器建立镜像,所需命令为:

docker commit -a 'clyan' -m 'this is the first version' 3d9cdd799aef mytomcat:v1
#docker commit -m “提交说明文字” -a “作者” 要提交的容器名 提交后的镜像名:提交后的镜像tag名

注意,本命令既可以使用容器id,又可以使用容器名称。

打包成功后,需要打标签(此时如果不打标签为如下格式,则会出错)

docker tag e6d190ad3797 192.168.102.135:/mytomcat

tag语法:[容器ID|容器名称][仓库][标签]

完成后,推入私有库(此时要确保私有库已经运行)

docker push 192.168.102.135:/mytomcat

推入成功后,客户端从私有库中拉取镜像,并转为容器,并运行:

docker pull 192.168.102.135:/mytomcat
docker run -p : --name mytomcat 192.168.102.135:/mytomcat:v1

4.注意事项:

使用命令拉取私有仓库镜像,并安装:

docker pull registry
docker run -d -p : -v /opt/data/registry:/var/lib/registry --name private_registry registry

Docker中配置私有仓库需要在:/etc/docker目录下建立文件daemon.json,内容如下:

{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["192.168.102.135:5000"]
}

或者根据systemctl status docker来确定docker文件,打开后在ExecStart行添加内容:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=192.168.221.129:5000
systemctl daemon-reload
systemctl restart docker

常用命令:

docker ps -n #查看容器
docker ps#查看运行容器
docker rm #删除容器
docker rmi #删除镜像

Docker环境安装部署Java应用(含安装Tomcat和JDK)的更多相关文章

  1. Nginx系列(8)- Nginx安装 | Docker环境下部署

    Docker环境下部署Nginx https://www.cnblogs.com/gltou/p/15186971.html

  2. 基于docker环境,搭建 jetty环境, 部署java项目

    前提: 1.Ubuntu 系统. 2.docker环境已经安装好. 实现步骤: 1.上docker hub 下载jetty docker 镜像. 执行命令:$ sudo docker pull jet ...

  3. Docker 环境下部署 redash

    环境: centos7 官网:https://redash.io/help/open-source/dev-guide/docker 一.安装步骤 1.虚拟机安装 安装vmware,并安装centos ...

  4. 阿里云Ubuntu部署java web(2) - 配置tomcat

    系统版本号:Ubuntu12.04 64位 安装: 首先要安装java(測试时使用的版本号是6b27-1.12.6-1ubuntu0.12.04.2).版本号可自行选择,但不同版本号配置方法可能不同. ...

  5. 使用Maven自动部署Java Web应用到Tomcat服务器

    学习如何使用Maven,我推荐一本工具书,<maven the definitive guide>.在这本工具书手中,详细介绍了maven的使用思想,并且提供了从基本到复杂的具体项目应用. ...

  6. Linux下安装部署Java

    Java安装6小部(适合新手) 1.下载软件包 # wget http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x ...

  7. Docker使用jenkins部署java项目到远程linux(三)

    实现功能:从本地提交代码到gogs上,本地的代码会被检测一遍 如果检测通过才能commit成功 然后可以继续执行push命令 .push后在gogs上使用web钩子自动推送到jenkins触发构建,j ...

  8. 在Docker环境下部署高可用的Eureka注册中心

    Eureka Server的同步遵循着一个非常简单的原则,只要有一条边将节点连接,就可以进行信息传播和同步 由于Eureka Server进行相互注册的方式来实现高可用的部署,所以我们只需要将Eure ...

  9. mc01_IntelliJ IDEA安装与Java项目创建以及Tomcat配置

    IntelliJ IDEA安装与激活 下载地址:http://www.jetbrains.com/idea/ 安装下一步下一步即可,关键是注册激活,该部分分两个步骤: 1. 配置windows hos ...

随机推荐

  1. linux命令详解——sort

    [原文链接]:http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html 1 sort的工作原理 sort将文件的每一行作为一个单位, ...

  2. MySQL配置文件my.cnf中文详解

    #BEGIN CONFIG INFO #DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大 #TYPE: SYSTEM #END CONFIG INFO # # ...

  3. JavaWeb零基础入门-02 开发环境安装

    大家好!我又来了,上一篇我们讲了一些基础概念:Html.Web服务器.数据库.Http和JavaWeb三大组件,它们是什么,有什么作用,都有了初步的了解.接下来我们进入学习JavaWeb的第一步,开发 ...

  4. Zookeeper常见问题FAQ

    Zookeeper 常见问题FAQ 1.Zookeeper设置权限之坑 大家都知道,zookeeper创建节点默认的权限为:world:anyone:crdwa 设置权限时,当不小心设置成只读r,那么 ...

  5. 高性能mysql 第6章 查询性能优化

    查询缓存: 在解析一个sql之前,如果查询缓存是打开的,mysql会去检查这个查询(根据sql的hash作为key)是否存在缓存中,如果命中的话,那么这个sql将会在解析,生成执行计划之前返回结果. ...

  6. 基于Twemproxy的Redis集群方案(转载)

    原文地址:基于Twemproxy的Redis集群方案 概述 由于单台redis服务器的内存管理能力有限,使用过大内存redis服务器的性能急剧下降,且服务器发生故障将直接影响大面积业务.为了获取更好的 ...

  7. 添加了两个IP

    //第一步:添加了两个IP root@default:~# ifconfig eth1:0 192.168.99.10 netmask 255.255.255.0 up root@default:~# ...

  8. 如何在python中使用chromedriver

    下载对应版本的chromedriver,不知道版本的请参考:https://stackoverflow.com/a/55266105/11128312 接下来将下载的chromedriver.exe放 ...

  9. python 单元测试_unittest(七)

    一.unittest中各阶段的核心概念:TestCase, TestSuite, 断言函数, TextTestRunner,TestFixture TestCase:所用用例的基类,软件测试中基本的测 ...

  10. C#中无边框窗体移动或拖控件移动窗体

    [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("use ...