docker容器共享宿主机环境(目录挂载)

一、背景介绍
  如果开发的服务均需要将打成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://blog.csdn.net/lu_1110/article/details/106533180,如有侵权,请联系删除。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值