docker镜像与传统vm虚拟机区别及分析

目录
  • 前言碎语
  • 前言:非常重要
  • 大白话docker
    • docker和传统vm的区别
  • 大白话:什么是镜像(image)?

前言碎语

这篇博文是博主在公司内推进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区别的资料请关注我们其它相关文章!

(0)

相关推荐

  • 谷歌技术人员解决Docker镜像体积太大问题的方法

    虚拟机的问题 最初,大家都使用虚拟机作为软件的运行环境,对外提供服务.为了在虚拟机上运行你的 Service,你不得不运行一大堆程序: 系统进程 定时任务 SSH 安装 Agent 安装 Bash 安装一大堆 libs 其实,你仅仅只是想让你的 Service运行起来,但你不得不维护一个 40GB的虚拟机. 然后你开始试用 Docker 开始试用 Docker,你毫不犹豫选择了和之前虚拟机一样的镜像:Ubuntu 1404,将之前的虚机的内容复制到了 Docker镜像,安装了一堆软件,最后发现你

  • 简单谈谈Docker镜像的使用方法

    在上篇文章(在Docker中搭建Nginx服务器)中,我们已经介绍了如何快速地搭建一个实用的Nginx服务器.这次我们将围绕Docker镜像(Docker Image),介绍其使用方法.包括三部分: 从Docker Hub或者其他镜像源安装Docker镜像 从Image file安装Docker镜像 从Docker file制作Docker镜像 查找Docker镜像 安装Docker镜像的第一步,是查找你需要的Docker镜像列表,键入: docker search mysql 如果出现权限问题

  • Docker中的镜像详细介绍

    Docker中的镜像详细介绍 Docker镜像可以理解为运行在Docker容器中的一个组件,本节将会带领大家学会Docker镜像的下载.搜索.查看.添加删除等一系列操作.Docker在运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker会尝试从默认的远程仓库Docker Hub下载. 一.获取镜像:  1.Docker从网络上下载镜像的格式为: docker pull [NAME]:[TAG] 其中TAG即为标签,如果不指定标签的话,那么默认会下载最新版本的镜像. 比如从Docke

  • 详解制作各种docker镜像

    做了一个星期的镜像,收货颇多,现在整理记录下来,当做工作笔记吧.把常用的几个镜像的Dockerfile分享下. 制作基础docker镜像 第一步:设置Docker镜像源 复制代码 代码如下: yum install -y yum-priorities && rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm && rpm --import /etc/pki/rp

  • Docker镜像分层的原理详解

    base镜像 base镜像有两层含义: 不依赖其他镜像,从scratch构建 其他镜像可以之为基础进行扩展 所以,base镜像一般都是各种Linux发行版本的Docker镜像,比如:Ubuntu,Debian或者CentOS等. base镜像提供的都是最小安装的Linux发行版本. 我们大部分镜像都将是基于base镜像构建的.所以,通常使用的是官方发布的base镜像.可以在docker hub里找到.比如centos:https://hub.docker.com/_/centos 我们可以自己构

  • docker镜像与传统vm虚拟机区别及分析

    目录 前言碎语 前言:非常重要 大白话docker docker和传统vm的区别 大白话:什么是镜像(image)? 前言碎语 这篇博文是博主在公司内推进docker+k8s落地时的部分内容.目的是为了让公司内的开发不管有没有接触过docker这个技术,都能准确的了解docker是什么,怎么打出符合自己项目需要docker镜像,最终交付给容器环境运行. 前言:非常重要 今天分享的内容主要以实际改造为主,剖开docker的神秘面纱,力求让大家都知道docker是什么,怎么打dcoker镜像,doc

  • 两种方式创建docker镜像的启动容器时区别介绍(总结篇)

    Docker是建立在Linux内核基础上的,在目前的主流Linux系统中,都已经原生支持了Docker且使用体验也最好,当然,在Windows平台和MacOS系统中也支持Docker,只是需要使用类似Boot2Docker等虚拟化工具来提供Linux支持. 下面重点给大家介绍基于两种创建docker镜像的启动容器时区别,感兴趣的朋友可以跟着小编一起学习! 1.凡是用docker commit生成的镜像启动的时候可以加载一个启动自己应用的脚本,例如: docker run -d -P tomcat

  • Docker镜像导出与导入与拷贝实例分析

    第一种解决方案是,将镜像推送到公有的镜像仓库,然后pull下来 第二种,将镜像打包,然后拷贝到第二台服务器中 #将镜像存储 docker save gateway:latest > /home/gateway.tar 将gateway.tar复制到需要的服务器上,然后在服务器上导入该镜像文件 #导入镜像文件 docker load --input /root/docker-images/nginx.tar 或者通过符号的方式来导入 docker load < /root/docker-imag

  • Docker 镜像和容器的区别详解

    最近学习Docker,被Docker 的镜像和容器搞的晕头转向,索性上网查找相关资料并整理下彻底的理解这块内容,有需要的小伙伴可以看下,少走点弯路. Docker的镜像和容器的区别 一.Docker镜像 要理解Docker镜像和Docker容器之间的区别,确实不容易. 假设Linux内核是第0层,那么无论怎么运行Docker,它都是运行于内核层之上的.这个Docker镜像,是一个只读的镜像,位于第1层,它不能被修改或不能保存状态. 一个Docker镜像可以构建于另一个Docker镜像之上,这种层

  • 理解Docker(2):Docker 镜像详细介绍

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 (4)Docker 容器的隔离性 - 使用 cgroups 限制容器使用的资源 (5)Docker 网络 对于每个软件,除了它自身的代码以外,它的运行还需要有一个运行环境和依赖.不管这个软件是象往常一样运行在物理机或者虚机之中,还是运行在现在的容器之中,这些都是不变的.在传统环境中,软件在运行之前也

  • springboot整合docker部署实现两种构建Docker镜像方式

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal.OpenStack 集群和其他的基础应用平台. docker的应用场景 web应用的自动化打包和发布: 自动化测试和持续集成.发布: 在服务型环境中部署和调整数据库或其他的后台应用: 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境. 项目结构 pac

  • docker镜像访问本地elasticsearch端口操作

    使用docker stack部署的镜像服务,进入镜像之后,理论上,应该可以通过下面的指令访问本地的elasticsearch服务 curl 本机ip/9200 但是却提示拒绝访问. 后来本机使用上述指令查看之后发现,本机也是拒绝访问. 之后发现,9200端口的elasticsearch服务,是通过打洞的方式连接的远程服务器上的elasticsearch服务,只能通过下面指令访问端口 curl 127.0.0.1:9200 如果想要通过本机ip访问9200端口,则需要在打洞指令的后面加上 -g.

  • Docker镜像加载原理

    目录 Docker镜像 镜像是什么? Docker镜像加载原理 Commit镜像 Docker镜像(Images)总结 Docker镜像 镜像是什么? 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. 所有的应用,直接打包docker镜像,就可以直接跑起来! 如何得到镜像? 远程仓库下载 朋友拷贝 自己制作一个镜像 DockerFile Docker镜像加载原理 UnionFS(联合文

  • 详解docker使用阿里云Docker镜像库加速(修订版)

    官方镜像下载实在是慢,于是开通了阿里云开发者帐号, 阿里的文档是错误的, 复制代码 代码如下: sudo sed -i "s|ExecStart=/usr/bin/docker daemon|ExecStart=/usr/bin/docker daemon --registry-mirror=https://pee6w651.mirror.aliyuncs.com|g" /etc/systemd/system/docker.service 这一句改为 复制代码 代码如下: sudo s

  • Docker 镜像、容器、仓库的概念及应用详解

    Docker 镜像.容器.仓库的概念 Docker镜像 Docker镜像(Image)类似于虚拟机的镜像,可以将他理解为一个面向Docker引擎的只读模板,包含了文件系统. 例如:一个镜像可以完全包含了Ubuntu操作系统环境,可以把它称作一个Ubuntu镜像.镜像也可以安装了Apache应用程序(或其他软件),可以把它称为一个Apache镜像. 镜像是创建Docker容器的基础,通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像.用户可以从网上下载一个已经

随机推荐