🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、实验环境

二、制作 jar

二、打包镜像

2.1 编写 DockerFile

2.2 构建 docker 镜像

三、运行镜像

四、远程访问容器


本文主要介绍如何将微服务实例的 jar 构建成 docker 镜像。

一、实验环境

本文的试验环境是 CentOS 7.9,如下所示。

[root@k8s-master ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[root@k8s-master ~]#

二、制作 jar

我创建了一个微服务实例,打包成了 jar,如下所示。

图1 微服务实例

上面的微服务实例可以通过 localhost:8088/index 访问,返回 hello,如下所示。

图2 访问微服务

 在 Linux 环境中创建一个目录 imagesJar,将 demo-0.0.1-SNAPSHOT.jar 拷贝到该目录下,如下所示。

[node@k8s-master imagesJar]$ ls
demo-0.0.1-SNAPSHOT.jar
[node@k8s-master imagesJar]$

二、打包镜像

在微服务实例同一目录下(imagesJar目录下)创建 DockerFile 文件,如下所示。

[node@k8s-master imagesJar]$ ls
demo-0.0.1-SNAPSHOT.jar  DockerFile
[node@k8s-master imagesJar]$

下面编写 DockerFile 文件。 

2.1 编写 DockerFile

编写 DockerFile 文件内容如下所示。

#penjdk:8-jre 为基础镜像,来构建此镜像,可以理解为运行的需要基础环境
FROM openjdk:8-jre

#WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行。
WORKDIR /opt/docker/images/metabase/

#将当前目录下 demo-0.0.1-SNAPSHOT.jar 复制到容器根目录下
ADD demo-0.0.1-SNAPSHOT.jar demo-0.0.1-SNAPSHOT.jar

#将依赖包 复制到容器根目录/libs下,demo-0.0.1-SNAPSHOT.jar 已不再需要添加其它jar包
#ADD libs /libs

#暴露容器端口为 8088 Docker镜像告知Docker宿主机应用监听了8088端口
EXPOSE 8088

#容器启动时执行的命令
CMD java -jar demo-0.0.1-SNAPSHOT.jar

2.2 构建 docker 镜像

在 imagesJar 目录下执行如下命令。

[node@k8s-master imagesJar]$ sudo docker build -f DockerFile  -t  test/demo:1.2.0 .
Sending build context to Docker daemon  16.5 MB
Step 1/5 : FROM openjdk:8-jre
 ---> 0c14a0e20aa3
Step 2/5 : WORKDIR /opt/docker/images/metabase/
 ---> Using cache
 ---> 971fa909168f
Step 3/5 : ADD demo-0.0.1-SNAPSHOT.jar demo-0.0.1-SNAPSHOT.jar
 ---> Using cache
 ---> e9c435263fb7
Step 4/5 : EXPOSE 8088
 ---> Running in 874466bc2650
 ---> 590b7380444b
Removing intermediate container 874466bc2650
Step 5/5 : CMD java -jar demo-0.0.1-SNAPSHOT.jar
 ---> Running in 2d14cbde1e3d
 ---> fff004fa39a7
Removing intermediate container 2d14cbde1e3d
Successfully built fff004fa39a7
[node@k8s-master imagesJar]$

查看打包好的镜像,执行如下命令。

[node@k8s-master imagesJar]$ sudo docker images
REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
test/demo                                             1.2.0               fff004fa39a7        26 seconds ago      290 MB
test/demo                                             1.0.0               d1d4460e42b1        25 hours ago        290 MB
test/demo                                             1.1.0               d1d4460e42b1        25 hours ago        290 MB
nginx                                                 alpine              4937520ae206        3 weeks ago         41.4 MB
nginx                                                 latest              eb4a57159180        3 weeks ago         187 MB
docker.io/openjdk                                     8-jre               0c14a0e20aa3        11 months ago       274 MB
192.168.231.152:5000/pod-infrastructure               latest              99965fb98423        5 years ago         209 MB
registry.access.redhat.com/rhel7/pod-infrastructure   latest              99965fb98423        5 years ago         209 MB
tianyebj/pod-infrastructure                           latest              34d3450d733b        6 years ago         205 MB
[node@k8s-master imagesJar]$

在上图中,test/demo-1.2.0 是新打得镜像。

三、运行镜像

打包完成镜像后,执行如下命令运行镜像。

[node@k8s-master imagesJar]$ sudo docker run -d -p 8088:8088 test/demo:1.2.0
4dbd849d1d79aa0874ee64f5c220a05b5b65395c94e3e12eb6e38e65121ccf29
[node@k8s-master imagesJar]$

查看运行的镜像,如下所示。

[node@k8s-master imagesJar]$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
4dbd849d1d79        test/demo:1.2.0     "/bin/sh -c 'java ..."   23 seconds ago      Up 21 seconds       0.0.0.0:8088->8088/tcp   zen_dijkstra
[node@k8s-master imagesJar]$

四、远程访问容器

通过浏览器访问容器,如下所示。

图3 通过浏览器访问容器

参考链接:

https://blog.csdn.net/Jarbein/article/details/103627413


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐