一、背景介绍
如果开发的服务均需要将打成docker镜像,可是随着服务越来越多,镜像也越来越多。每次制作镜像的时候都需要将依赖打进容器,这样一个jre的环境就是100多M。有一天突发奇想,容器能不能共用宿主机的环境?这样每次打镜像时体积就会少不少。
二、测试
我们测试用的是java的web项目做的测试,框架用的springboot,由于集成了tomcat插件,所以web项目打成jar包即可运行。
1、在宿主机上安装jdk环境,目录在/home/softwares/jdk1.8.0_151。
2、制作没有jdk环境的镜像。
Dockerfile文件内容如下:
From debian:latest
ADD springWeb.jar /app.jar
ENV JAVA_HOME=“/home/softwares/jdk1.8.0_151”
ENV PATH=“
P
A
T
H
:
{PATH}:
PATH:{JAVA_HOME}/bin:${JAVA_HOME}/sbin”
ENTRYPOINT [ “java”, “-jar”, “/app.jar” ]
以上镜像是没有jdk环境的,所以在生成容器的时候一定要把宿主机jdk目录挂载到容器中。
3、生成镜像
docker build -t jdktest .
注释:jdktest是镜像的名字。
4、生成容器
docker run -d --name jdktest -p 8088:8081 -v /home/softwares:/home/softewares --restart=always jdktest
5、打开8088端口,然后用浏览器访问项目地址,成功!
三、优点
1、它的优点很明显,减少许多镜像体积。
debian系统有的只有5M不到,加上自己的一个jar包,镜像可能也就30M不到。而一个jre1.8的环境就得100多M。可以所体积减少很多。
四、缺点
1、增加了容器对宿主机的依赖性。
一旦宿主机的运行环境进行升级或改动,必定影响容器的运行。
2、增加了新人交接的难度。
生成容器时必须要将宿主机的运行环境目录挂载到容器中,也就是上面的 -v /home/softwares:/home/softewares操作。若没有此操作,容器是生成后就退出了。若进
行新人交接时,他不知道要进行环境目录挂载,后面就GG了。
文章来源:https://www.toymoban.com/news/detail-492414.html
本文转自https://blog.csdn.net/lu_1110/article/details/106533180,如有侵权,请联系删除。文章来源地址https://www.toymoban.com/news/detail-492414.html
到了这里,关于docker容器共享宿主机环境(目录挂载)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!