Docker能解决什么问题呢?
一个工具的出现必然需要解决一些问题,Docker也不例外,简单说说我们常见的2种情况Docker是如何解决的吧。
1、程序在我这跑得好好的,在你那怎么就不行呢?!
这是一个典型的应用场景,作为程序员别说没有遇到过这个问题。Docker
image(镜像)中不仅包含了代码,也包含了程序运行时所需的所有依赖。比如java的程序,肯定要在image中包含jdk;比如Python的程序,肯定要在image中包含对应版本的Python解释器。程序在我这跑得好好的,去你那就不行了,这显然是环境问题,Docker把整个运行时环境打包放到image中,所以搞定了环境依赖问题!
这点很重要么?真的很重要!我们知道,一个程序要跑起来,需要这么几部分:代码
+ 运行环境 + 配置 +
依赖的服务。代码当然就是同一份代码,不同的环境都一样,通常不会有问题。但是问题的关键就在于环境和配置,不同的环境、不同的配置,同样的代码就不一定能按部就班的跑起来了。Docker
image中包含了运行环境+配置,既能够确保环境和配置的统一,也能够方便快速的部署。
所以总结起来就是:Docker解决了运行环境和配置问题,方便发布,也就方便做持续集成。
2、系统好卡,肯定是又有哪个哥们的程序在作孽了
现在的服务器都牛的很,动不动128G内存,24个CPU,Linux本身就是个多租户的操作系统,可以多人共用,但是如果某个程序狂吃内存和CPU,占用了太多系统资源,这就会影响其他程序的运行。
一个公司的几个同事共用一台机器出现这种问题可以通过内部协调沟通解决。但是云主机提供商呢?不同的用户之间不认识,共用一台强大的计算机,结果某个程序耗尽了资源,用户肯定不乐意了。所以虚拟机出现了,良好了做了资源隔离,不同用户之间彼此老死不相往来,不会相互影响,世界一下子清静了。但是,虚拟机有缺点:创建速度慢,迁移起来麻烦,因为中间加了一层guest
os,有了性能损耗,一个牛逼的机器也就创建十几个虚拟机,太浪费了...
相对虚拟机的重量级虚拟化方案,Linux内核级的一些隔离方案让人们看到了希望,cgroups、namespace、tc、quota、chroot、lxc。终于,Docker出现了,Docker利用这些成熟的技术,让虚拟化变得轻量了起来,创建一个container瞬间完成,秒级!cpu指令集不再被翻译执行,性能损耗非常少,虽说隔离性没有虚拟机那么彻底,安全性上稍差一些,但也基本可以用,不用太担心~
所以总结起来就是:更轻量的虚拟化,节省了虚拟机的性能损耗。

也谈谈我对Docker的简单理解的更多相关文章

  1. 从Docker在Linux和Windows下的区别简单理解Docker的层次结构

    上篇文章我们成功在Windows下安装了Docker,输出了一个简单的Hello World程序.本文中我们将利用Docker已有的云端镜像training/webapp来发布一个简单Python的W ...

  2. 老司机实战Windows Server Docker:3 单节点Windows Docker服务器简单运维(上)

    经过上两篇实战Windows Server Docker系列文章,大家对安装Windows Docker服务以及如何打包现有IIS应用为docker镜像已经有了基本认识.接下来我们来简单讲讲一些最基本 ...

  3. 老司机实战Windows Server Docker:4 单节点Windows Docker服务器简单运维(下)

    上篇中,我们主要介绍了使用docker-compose对Windows Docker单服务器进行远程管理,编译和部署镜像,并且设置容器的自动启动.但是,还有一些重要的问题没有解决,这些问题不解决,就完 ...

  4. 谈谈你对 Java 平台的理解

    声明 本篇所涉及的提问,正文的知识点,全都来自于杨晓峰的<Java核心技术36讲>,当然,我并不会全文照搬过来,毕竟这是付费的课程,应该会涉及到侵权之类的问题. 所以,本篇正文中的知识点, ...

  5. 【Docker江湖】之docker部署与理解

    转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thi ...

  6. Windows 下 Docker 的简单学习使用过程之一 dockertoolbox

    1. Windows 下面运行 Docker 的两个主要工具1): Docker for Windows2): DockerToolbox区别:Docker For Windows 可以理解为是新一代 ...

  7. java面试题(杨晓峰)---第一讲谈谈你对java平台的理解

    本人总结: 面向对象(封装,继承,多态) 平台无关性(jvm运行,class文件) 语言(泛型,lambda) 类库(集合,并发,网络,io/nio) jre(java运行环境,JVM,类库) JDK ...

  8. Docker的镜像理解以及容器的备份、恢复和迁移操作

    Docker的镜像理解以及容器的备份.恢复和迁移操作 这篇文章主要介绍了Docker的镜像理解以及容器的备份.恢复和迁移操作,覆盖很多原理知识以及容器的重要操作步骤,极力推荐!需要的朋友可以参考下 D ...

  9. docker 容器简单使用

    文章目录 docker简介 docker容器简单使用 1.HelloWorld 2.运行交互式的容器 3.启动容器(后台模式) 安装docker容器的博文有很多这里就不做过多赘述了,另外如果不想安装d ...

随机推荐

  1. cookie 详解

    cookie概览 cookie是Web浏览器存储的少量命名数据,它与某个特定的网页或网站关联在一起.cookie是用来给Web浏览器提供内存,以便脚本和服务端程序可以在一个页面使用另一个页面的输入数据 ...

  2. zabbix实操随笔

    vmware 9.0安装,vmware tools安装 fedora 15.0安装1G内存以上fedora上基本操作指令1.vmtools 共享文件在linux上安装有问题,出现找不到**.so.1之 ...

  3. mybatis拦截器处理

    1.自定义注释 package com.hsfw.backyard.biz.security.authority; import java.lang.annotation.*; /** * 数据权限过 ...

  4. Python学习(二十七)—— Django和pymysql搭建学员管理系统

    转载自http://www.cnblogs.com/liwenzhou/p/8270250.html 一.学员管理系统 1.项目规划阶段 项目背景 近年来老男孩教育的入学学员数量稳步快速增长,传统的e ...

  5. SQL注入——SQL Injection

    本文部分内容转自:https://www.cnblogs.com/rush/archive/2011/12/31/2309203.html http://www.diybl.com/course/7_ ...

  6. Python 枚举 enum

    Python 枚举 enum enum 标准模块在 3.4 版本才可以使用,3.3 以下版本需要独立安装:https://pypi.python.org/pypi/enum34#downloads,官 ...

  7. springmvc接受前端的参数封装成对象

    前端如果传过来的是json格式的字符串,后台参数需要加@RequestBody注解. 前端如果传过来的是json对象,后台不参数需要加@RequestBody注解. $.POST({ url: url ...

  8. centos7如何添加开机启动服务/脚本

    一.添加开机自启服务 在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务为 ...

  9. 01++ Bookshelf 2

    http://poj.org/problem?id=3628 就是比原题多了一个要求,输出>=m的最小值 kisang~独立做出来的都开心<( ̄︶ ̄)> #include<cs ...

  10. Dijkstra算法之 Java详解

    转载:http://www.cnblogs.com/skywang12345/ 迪杰斯特拉算法介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径. 它的主 ...