docker打包jar镜像

小编最近在实习公司帮忙做项目部署,对方要求需要把jar包再次进行docker镜像封装,小编呢也没有了解过docker镜像,于是就去百度了一波,发现了这个Docker中文文档,感觉还不错,大家不会的可以来看看,很详细的介绍了有关Docker的东西,不多说,直接做。
系统:Ubuntu16.04
要求:apt、wget、ssh、docker、linux版的JDK以及交互界面(xshell、xftp)
备注:有的文档说要在Ubuntu上用yum安装软件,那是不用的,因为Ubuntu上有一个很好用的安装软件的应用:apt
首先,我们需要对系统进行更新:

sudo apt-get update

然后确保我们安装了wget:

which wget

如果没有安装:

sudo apt-get update $ sudo apt-get install wget

安装wget之后,进行docker安装:

wget -qO- https://get.docker.com/ | sh

我们可以先运行一个例子:

sudo docker run hello-world

然后运行

sudo docker images

如果大家不想运行docker命令时一直加sudo,docker也提供了权限进行扩充:

sudo usermod -aG docker <你的Ubuntu名称>

这样就不用加sudo了,可以直接运行docker命令。
我们就可以看到相关的镜像文件了。
以上是安装docker的步骤,接下来进行docker镜像打包jar。
各位都是高手,如何对java项目进行打包就不用多说了,相信大家都会,不会的请自行百度。
首先我们进入到一个目录中,我是Documents目录,大家随便,随后创建一个文件夹

mkdir ming

里面有这样的文件:Dockerfile和你的jar包。
Dockerfile中有这样几个东西:

FROM <其他依赖>
MAINTAINER username <用户名>
这里是操作命令,大家按照自己的来进行编写,不会的参考文档
CMD /usr/sbin/sshd -D #这是cmd命令,最后运行该命令

我们把Dockerfile写好后,连同jar包和JDK一起放到创建的文件夹ming中,其他两个提前准备的就用到了,为什么要用xshell和xftp呢,就是为了我们可以方便的上传下载文档。
文件齐全后,开始进行创建docker镜像:
创建自己的docker镜像:

切换到Dockerfile文件所在目录,执行下面脚本(注意最后有个点)
docker build -t limq:2 . 

启动容器:

docker run -it -p 8080:8080 limq:2 /bin/bash

在容器中进行以下命令:

cd home
mkdir soft
cd soft
mkdir tools
有什么用稍后再说

随后退出容器并提交改变后进行保存:

exit
docker commit 容器ID 镜像名:标签
查看容器ID(docker ps -a)
查看镜像名:标签(docker images)

我们复制JDK到容器中:

我们需要对建立好的镜像进行java配置,就用到了刚开始的两个文件夹
docker cp jdk-8u192-linux-x64.tar.gz 容器ID:/home/soft/tools

启动容器:

docker start容器ID
docker exec -it 容器ID bash

安装java:

tar -zxvf jdk-8u192-linux-x64.tar.gz -C /home/soft/

修改环境变量:

mkdir /usr/lib/jvm
mv jdk1.8.0_192  /usr/lib/jvm

vi ~/.bashrc

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_192
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

让环境立刻生效:

source ~/.bashrc

查看java是否装好:

java -version

退出容器并进行修改:

exit
docker commit 容器ID 镜像名:标签

导出镜像文件:

docker save -o 本地存放路径/**.tar 镜像名:标签

至此呢,docker打包jar镜像已经完成了,大家可以将打包好的镜像文件下载下来放到本地。
另附上一些docker命令:

停止所有容器运行:docker stop $(docker ps -a -q)
删除所有容器:docker rm $(docker ps -a -q)
删除指定镜像:docker rmi <image id>
删除所有的镜像:docker rmi $(docker images -q)

猜你喜欢

转载自blog.csdn.net/qq_32113189/article/details/84303643
今日推荐