文档章节

Docker 从安装到发布jdk+tomcat发布war包

天马行空的鱼
 天马行空的鱼
发布于 2017/08/16 14:30
字数 960
阅读 39
收藏 0

1,docker安装之前写过就不在赘述了,我的环境64位centos7.1内核3.1,直接写命令

#更新yum

sudo yum update

#添加yum仓库

$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'

[dockerrepo]

name=Docker Repository

baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/

enabled=1

gpgcheck=1

gpgkey=https://yum.dockerproject.org/gpg

EOF

#安装docker

sudo yum install docker-engine

#启动docker服务

sudo systemctl daemon-reload
sudo systemctl restart docker

#验证是否成功

sudo docker info

sudo docker version

sudo docker run hello-world

以上安装完毕,官网,docloud,阿里云也有安装脚本。

安装结束如果不配置代理,我用docloud的加速器,官网上把加速器的脚本复制过来执行一下即可。

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://9c0b10da.m.daocloud.io

说一下卸载:

yum list installed | grep docker

#会列出已安装的docker删除即可

sudo yum -y remove docker-engine.x86_64

#删除镜像/容器等

rm -rf /var/lib/docker

以上docker的准备环境完毕。

首先下载镜像如我需要centos

sudo docker search centos

这时我们会看到centos的镜像,至于有关镜像的理解个人更愿意把它理解为虚拟光驱的镜像使用。

#下载镜像默认是最新的centos镜像

sudo docker pull centos

#查看镜像

sudo docker images

好了现在我们准备jdk和tomcat,把它放在当前目录下(本人没用Dockerfile方式因为不是很熟练,所以用的一下方法,个人认为Dockerfile挺好)

sudo docker run -i -t -v /home/docker/software:/mnt/software --privileged=true d7b5decce082

#docker run <相关参数> <镜像ID> <初始命令>, 意思运行d7b5decce082即刚才下载的centos把本地的tomcat和jdk目录挂载到docker镜像中。

安装jdk

进入镜像后就是linux系统,进入挂载目录mnt/software下。

配置环境变量:

1,vi  ~/.bashrc

export  JAVA_HOME=/opt/jdk

export  PATH=$PATH:$JAVA_HOME

2,在etc/profile文件末尾加入: 
export JAVA_HOME=/usr/share/jdk1.6.0_14 
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 

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

source ~/.bashrc

source /etc/profile

以上配置环境变量细节不写了如果不同之处修改jdk版本和你的jdk路径即可。

安装tomcat

还是和平常linux一样我把项目的tomcat直接cp下来放到webapps下了.

在一个目录下些一个tomcat启动脚本内容如下

#!/bin/bash

source  ~/.bashrc

sh  /opt/tomcat/bin/catalina.sh run

注意:这里必须先加载环境,然后使用Tomcat的运行脚本来运行Tomcat

最后,为运行脚本添加执行权限:

chmod  u+x  run.sh

提交镜像

首先退出你刚才配置好的docker镜像

exit

然后使用以下命令可以看到刚才退出的docker镜像

docker ps –a

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

docker  commit  57c312bbaad1  javaweb:0.1

该容器ID是”57c312bbaad1”,所创建的镜像名是”javaweb”

注意:”57c312bbaad1” 这个ID是使用 docker ps 命令来查看的

提交了新的镜像你可以把这个镜像储存tar包

docker save –o  ~/javaweb.tar  javaweb

docker save –o  保存的目录  镜像名

补充docker载入镜像两种方法

sudo docker load --input 文件

sudo docker load < 文件名

启动容器

先用 docker  images看看当前所有的镜像

启动最新创建的镜像

docker  run  -d  -p  80:80  --name  javaweb  javaweb:0.1  /opt/run.sh

 

-d:表示以”守护模式”执行/root/run.sh脚本,此时Tomcat控制台不会出现在输出终端上。

-p:表示宿主机与容器的端口映射,此时将容器内部的80端口映射为宿主机的 80端口,这样就向外界暴露了80端口,可通过Docker网桥来访问容器内部的80端口了

--name:表示容器名称,用一个有意义的名称命名即可

以上全部完事,以上包括自己整理和网上摘取。

© 著作权归作者所有

共有 人打赏支持
天马行空的鱼
粉丝 8
博文 54
码字总数 31978
作品 0
QA/测试工程师
快速构建docker镜像:maven插件

越来越多的项目开始了docker容器化部署的进化,在容器化之前我们部署一个项目,可能由源代码产出一个jar或者war即可直接发布了,启动之后是一个java进程;容器化之后,由源代码产出的是一个d...

rabbitGYK
04/15
0
0
jenkins和docker实现自动化构建部署

应用场景 程序员开发应用,开发后需要提交svn,然后从svn拉取代码,进行构建,发布到tomcat中,发布,然后看呈现效果,这样的工作是频繁反复的在进行的,浪费了程序员的大量时间,那么能不能...

wsc449
2017/12/06
0
0
Docker+Jenkins+GIT+Tomcat实战持续化集成

Docker基础教程可参考:容器Docker详解Jenkins基础知识可参考:jenkins笔记(1)Git基础知识可参考:GIT笔记文件脚本内容参考:junsansi,可以根据实际项目具体修改脚本。 一、概要 > 开发将...

KaliArch
2017/12/19
0
0
Jenkins+docker实现应用发布和更新

Jenkins+docker实现应用发布 Jenkins:centos6.5 ip:192.168.83.84 Docker:centos7.2 ip:192.168.83.60 一、安装Jenkins 最新版: sudo wget -O /etc/yum.repos.d/jenkins.repo http://pk......

盖世英雄iii
06/27
0
0
Jenkins与Docker的自动化CI/CD实战

在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署、交付(CD)。本文基于Jenkins+Docker+Git实现...

李振良OK
08/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
2
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
113
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
4
0
我为什么用GO语言来做区块链?

Go语言现在常常被用来做去中心化系统(decentralised system)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。 我们在决定做Karachain的时候,考量(b...

HiBlock
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部