docker镜像与传统vm虚拟机区别及分析
前言碎语
这篇博文是博主在公司内推进docker+k8s落地时的部分内容。目的是为了让公司内的开发不管有没有接触过docker这个技术,都能准确的了解docker是什么,怎么打出符合自己项目需要docker镜像,最终交付给容器环境运行。
前言:非常重要
今天分享的内容主要以实际改造为主,剖开docker的神秘面纱,力求让大家都知道docker是什么,怎么打dcoker镜像,docker这块是开发必须要了解的,以后我们的交付物不是jar,也不是war,而是可以运行在各种容器化平台(k8s,swarm,mesos,OpenShift等)的docker镜像。
k8s这块已经偏运维了,运维需要掌握k8s中的诸多概念,以后运维就不是运维ECS主机了,直接运维k8s。然后分别以spring boot和tomcat两个类型的不同应用为例。讲下具体的改造方案,以及我们在这个期间解决的一些问题和改造需要注意的细节
大白话docker
docker和传统vm的区别

虚拟机属于完全虚拟化,即模拟完整的底层硬件环境特权指令的执行,客户操作系统无需进行修改。比如我们常用的VirtualBox,VMWare Workstation和Parallels Desktop等虚拟化软件。
Docker和其它容器技术便是操作系统级虚拟化,即直接通过内核创建虚拟的操作系统实例(内核和库),来隔离不同的进程和资源。
大白话:什么是镜像(image)?

在docker没有出现流行前,一般提到镜像,都是Windows等系统镜像,其实docker镜像和Windows等系统镜像在概念上是一样的,都是将一个完整的可运行的系统打包下,方便下次运行时包含所有环境,不需要安装各种依赖了。
java的docker镜像中一般都有一个最基础的镜像+jre环境,最基础的系统运行环境,大概4M左右。然后我们需要将我们的spring boot应用copy进去,重新打包镜像。那么新的镜像就是包含了我们的应用的所有的依赖了。
这个过程相当于,将我们uat环境的ECS主机copy一份镜像一样,但是这个体积有很大的区别。最终我们打完的docker镜像大小=基础系统(4M左右)+java(80M左右)+应用(100M左右)
spring boot应用docker镜像脚本Dockerfile示例
FROM registry-vpc.cn-shanghai.aliyuncs.com/keking/jdk:1.8 ENV LANG C.UTF-8 COPY producer/target/salesApp-1.0-RELEASES.jar app.jar CMD $runShell
以上就是docker镜像与传统vm区别及分析的详细内容,更多关于docker镜像与vm区别的资料请关注脚本之家其它相关文章!
相关文章
docker desktop搜索不到images问题的解决办法
这篇文章主要给大家介绍了关于docker desktop搜索不到images问题的解决办法,主要包括检查网络连接、Docker配置、清理缓存和使用其他镜像源,通过这些方法,用户可以解决在实际应用中搜索不到Images的问题,需要的朋友可以参考下2025-03-03
在Ubuntu Server 22.04上安装 Docker的详细步骤记录
通过使用容器技术,Docker能够让开发人员将应用及其依赖环境一同打包,从而实现快速部署、一致的开发环境和优秀的可移植性,这篇文章主要给大家给大家介绍了关于在Ubuntu Server 22.04上安装 Docker详细步骤的相关资料,需要的朋友可以参考下2024-08-08
windows宿主机和docker容器设置挂载共享文件夹的步骤
这篇文章主要介绍了windows宿主机和docker容器设置挂载共享文件夹的步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-11-11


最新评论