1、Docker 是什么?

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

2、Docker 为什么会出现?

①、一次构建,到处运行

一个项目,从开发-上线,开发人员需要在本机进行开发,运维人员将打包的服务部署上线,涉及到操作系统变更,应用配置变更,很常见的一种情况是:

我本地运行的好好的,怎么到你那就不行了呢?

进而衍生出:

项目可以带环境安装吗?也就是部署的时候,可以把原始环境一起打包复制过来。

Docker 便能干这个事,通过 Docker 打包镜像发布测试,提供了一个标准化的解决方案,再也不用担心因为环境不一致而导致的服务部署问题。

②、更高效的计算资源利用

我们部署项目,发展历程如下:

一、物理机时代

部署一个服务,会粗略估计服务所需要的机器性能,然后去采购对应的真实物理机器,然后在该机器上安装服务需要的一些软件,比如服务器Tomcat,数据库MySQL等等。

物理机时代还是有很多缺点的:

1、部署非常慢:采购机器,安装系统,安装软件等等;

2、成本高以及资源浪费:通常为了以防服务性能不够,我们都会尽量采购比预期资源高一点的机器,不仅会增加成本,还会造成机器资源浪费;

3、难于扩展与迁移:由于是真实的物理机,扩展或者迁移会比较麻烦;

二、虚拟机时代

VMware 相信大家都玩过,通过VMware 我们能在自己电脑上创建很多虚拟机器,而物理机时代就是在一台真实物理机上,虚拟出多台机器,而且每台机器都可以看做是一台独立的电脑。

相对于物理机时代,虚拟机能够在一台机器上创建多台机器,能够充分利用资源,并且也做到了机器之间的隔离,机器性能不够用了,也可以通过 Hypervisor 随时进行扩展。

但是也有个缺点,我们每一台虚拟机都要独立安装操作系统,大家知道操作系统其实也是比较占用性能的,有多少台虚拟机,我们就得多安装多少个操作系统,这样就浪费了很多资源,那么怎么解决呢?

三、容器化时代

容器类似于 VM,但是它们具有被放宽的隔离属性,可以在应用程序之间共享操作系统(OS)。 因此,容器被认为是轻量级的。容器与 VM 类似,具有自己的文件系统、CPU、内存、进程空间等。可以把容器看做是不用安装操作系统的虚拟机,容器化技术比虚拟机更加灵活,更加小巧,更加极致的利用物理机资源。

3、Docker 的优点

①、部署快,开发测试更加敏捷

通过Docker 打包镜像发布测试,一键运行。

②、快速扩缩机器

由于Docker容器快速启动特性,可以很快速的启动几十个、上百个容器来提供更多并发和资源利用率,并且这么多容器也有比较成熟的解决方案来统一管理,比如K8S。

③、提高系统利用率,降低硬件成本

轻量级的虚拟机,更省资源。

④、跨环境可移植

⑤、更好的支持微服务

微服务是近几年来IT圈内谈论比较多的一个名词,意义也很简单:尽可能细粒度拆分业务程序架构,由多个独立服务组成业务系统。

而Docker的容器设计原则:一个容器一个服务,容器之间相互隔离,和微服务正好遥相呼应。

⑥、应用运维标准化,支持不同语言应用

⑦、避免云厂商锁定

4、Docker 学习网站

①、官网(永远的神)

https://www.docker.com/

②、官方文档

https://docs.docker.com/

③、仓库地址

https://hub.docker.com

Docker从入门到精通(一)——初识的更多相关文章

  1. docker从入门到精通再到放弃

    docker说明 docker三大功能:构建(build).运输(ship).运行(run),只需要记下这三大功能就可以了 1.docker入门 docker安装及配置 a.docker源配置 cur ...

  2. docker 从入门到精通

    转载请注明出处!!!! 1.Docker 基本指令 下载镜像 docker pull 镜像名称:版本 查看已有镜像 docker images 查看已有容器 docker ps 启动docker do ...

  3. 《OD Docker实战》Docker从入门到精通

    一. 安装Docker http://wiki.jikexueyuan.com/project/docker-technology-and-combat/ https://mos.meituan.co ...

  4. Docker从入门到精通(二)——安装Docker

    通过上面文章,我们大概知道了什么是Docker,但那都是文字功夫,具体想要理解,还得实操,于是这篇文章带着大家来手动安装Docker. 1.官方教程 https://docs.docker.com/e ...

  5. Docker从入门到精通(三)——概念与执行流程

    前面我们大概介绍了docker是什么以及如何安装docker,但是对里面出现的一些名词,可能大家还不熟悉,这篇文章就来为大家解惑. 1.容器化平台 Docker 是提供应用打包,部署与运行应用的容器化 ...

  6. Docker从入门到精通(四)——常用命令

    话不多说,本篇文章给大家介绍 docker 的常用命令,基本上会覆盖我们日常使用的命令. 1.万能帮助命令 docker 命令 --help 假设你想用某个命令,但是又不知道该命令的一些参数怎么用,这 ...

  7. Docker从入门到精通(五)——Dockerfile

    Dockerfile 简单来说就是一个包含用于组合镜像的命令的文本文档,Docker 通过读取 Dockerfile 中的指令就可以按步骤生成镜像,那么在制作镜像之前,我们先了解一下镜像的原理. 1. ...

  8. Docker从入门到精通(六)——容器通信

    想要变成 Docker 的高阶玩家,搞懂 Docker 的容器通信是必不可少的. 1.需求 通常一个 Web 项目上线,我们会把开发完成的服务部署在Tomcat 服务器里面,然后需要的持久化数据会存放 ...

  9. Docker从入门到精通(七)——容器数据共享

    什么是容器数据共享?简单来说就是容器与容器之间数据共享,容器与宿主机数据共享. 1.为什么需要数据共享? ①.数据持久化 比如我们有一个MySQL集群,通过容器启动,那么项目运行过程中的数据是保存在容 ...

随机推荐

  1. 大一C语言学习笔记(6)---自省篇--流程控制;break,continue,return间的异同;数组应用到循环语句中需要注意的问题;++i 和 i++的异同等。

    下面是傻瓜博主"曾经"犯过的错和一些心得:        ༼ つ ◕_◕ ༽つ 1.要想流程控制学好,一定要学会化繁为简,举栗子: 三目运算符 (略?略:略)---就是一个数字嘛, ...

  2. [Noip 2012]同余方程(线性同余方程)

    我们先放题面-- RT就是求一个线性同余方程ax≡1(mod b)的最小正整数解 我们可以将这个同于方程转换成这个方程比较好理解 ax=1+bn(n为整数 我们再进行一个移项变为ax-bn=1 我们设 ...

  3. Haywire

    还是模拟退火乱搞. 不过考虑记录一下在整个退火过程中的最优答案. 而不是只看最后剩下的解. 退火是一个随机算法,他有很大的几率能跳到最优解,但也很有可能从最优解跳出去. 所以要记录答案. Haywir ...

  4. bitset 的妙用:乱搞字符串匹配

    最近碰到了几次 bitset 乱搞字符串匹配的情况,故写文以记之. 1. 算法简介 核心思想:假设文本串为 \(s\),则对字符集中的每一个字符 \(c\) 开一个大小为 \(|s|\) 的 bits ...

  5. nginx负均

    Nginx负载均衡详解 上一篇中我说啦nginx有哪些中负载均衡算法.这一结我就给如果操作配置的给大家做详细说明下. 首先给大家说下upstream这个配置的,这个配置是写一组被代理的服务器地址,然后 ...

  6. kubernetes 用到的工具及组件

    kubernetes 用到的工具及组件,将所有的组件下载后放到/usr/local/bin目录下(记得chmod a+x /usr/local/bin/*).所有的组件,原则上都用最新的,如果遇到不支 ...

  7. 在前端页面中使用Markdown并且优化a标签

    近期在自己的项目中加入了对 Markdown 语法 的支持,主要用到的是markedjs这个项目.该项目托管在github上,地址为:https://github.com/markedjs/marke ...

  8. C语言中的main函数的参数解析

    main()函数既可以是无参函数,也可以是有参的函数.对于有参的形式来说,就需要向其传递参数.但是其它任何函数均不能调用main()函数.当然也同样无法向main()函数传递,只能由程序之外传递而来. ...

  9. 学习Java的第四天

    一.今日收获 1.java完全手册的第一章 2.   1.6节了解了怎么样用记事本开发java程序 与用Eclipse开发 2.完成了对应例题 二.今日难题 1.一些用法容易与c++的混淆 2.语句还 ...

  10. 一个专业处理字符串的IDEA插件

    字符串处理想必是小伙伴们平时开发时经常碰到的一个 "难题".为什么要打上引号?因为你说他难吧,其实也不是什么特别复杂的事:你说他不难吧,弄起来还真挺麻烦的,像删除其中空行啊.切换大 ...