Docker基础入门 (一)—— 简介

Docker —— 简介

1. Doker是个什么玩意

说Docker是什么之前,先来看一看Docker为什么会出现。我们知道,在学习过程中我们需要频繁地安装配置一些软件,不管是在Windows下还是在Linux,这些东西的配置过程都是非常费时费力的,稍有不慎就得删了重来,换一台机器,还得重来一次,更讨厌的是经常出现一些环境的兼容性问题(比如一些软件只兼容win7)。那么有没有这样一种解决方式:软件带环境安装,省去麻烦的安装配置过程,并且完全不用考虑环境兼容问题,因为自带环境嘛。也就是说,安装的时候,把原始环境一模一样地复制过来(上面说了,有一些软件不兼容win10,那我就在win7上装好,将软件和系统揉成一坨,拿到win10上使用)。

粗暴的总结成一句话:Docker就是这么个玩意儿——应用程序+运行环境所构成的容器

2. Docker的践行理念

通过上文,我们大致知道了这是个什么东西,接下来我们看看Docker的设计理念。

Docker是基于Go语言实现的云开源项目。

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。

Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。依托Docker技术, 我们可以把应用程序和它所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。 只需要一次配置好环境,换到别的平台、环境上就可以一键部署好,极大地方便了应用部署运维 。

总的说来:大家知道java是一门跨平台语言,一次编译,到处“调试”;而Docker真的做到了,一次构建,到处运行!!

3. 浅谈虚拟化技术

大佬说了一句话:

Docker是解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器化虚拟技术。

这句话提到了虚拟化和容器化两个技术名词,接下来我们来简单了解一下这两个玩意儿。

3.1 之前的虚拟化技术:

大家肯定都接触过的虚拟化技术——虚拟机(例如:vmware)。虚拟机就是一种带环境安装的解决方案,它可以在一种操作系统里面运行另一种操作系统,比如说在Windows里面运行Linux系统(Vmware虚拟出一套硬件平台,Linux就是运行在这套平台上的)。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。这类虚拟机完美的运行了另一套系统,能够使应用程序,操作系统和硬件三者之间的逻辑不变。 简单画个图感受一下:

注意:APP是运行一层虚拟化出来的硬件平台上,这样的虚拟机具有以下缺点:

  • 资源占用多
  • 冗余步骤多
  • 启动慢

3.2 容器化虚拟化技术:

由于前面虚拟机存在这些缺点,Linux 发展出了另一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC)。==Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。==有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。

比较了 Docker 和传统虚拟化方式的不同之处:

  • 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
  • 而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
  • 每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。

3.3 对比传统虚拟机总结

特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为 MB 一般为 GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个

4.从DevOps的角度看Docker(选看)

4.1 更快的应用交付和部署:

传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。

4.2 更便捷的应用升级和扩缩容

随着微服务架构和Docker的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。

4.3 更简单的系统运维

应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。

4.4 更高效的利用系统资源

Docker是内核级虚拟化,直接运行在硬件平台上,它不像传统的虚拟化技术一样需要额外Hypervisor支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存的利率。

除此之外,还有更快速的启动、保证一致的运行环境、持续交付和部署、更轻松的迁移。。。。

总而言之:Docker天下第一 ~

既然Docker这么完美,那么我们是不是对着它该来一发?下篇笔记记录了怎么撸它~

参考文章:

[1] 周阳.Docker基础篇之快速上手

[2] 李卫民.Docker文档

原文地址:https://www.cnblogs.com/simon-1024/p/11755158.html

时间: 2024-08-25 17:51:45

Docker基础入门 (一)—— 简介的相关文章

Docker基础入门实战(一)

Docker基础入门实战 第1章          docker简介 1.1  what is Docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源,源代码部署在GitHub上. Docker是通过内核虚拟技术来提供容器的资源隔离与安全保障,由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,从而提高资源的利用率. Docker的目标是实现轻量级的操作系统虚拟化解决方案. 1.2 

Docker基础入门及示例

Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环境部署当中.这篇文章我将针对以下几个方面简单介绍: 1. docker的基础介绍 2. docker在windows下的安装配置 3. 基础命令介绍 4. 使用vs2017在docker下调试 5. 打包一个.net core站点镜像 一. docker基础介绍 可能很多朋友对docker还停留在听

Docker 基础入门

1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. 1.1.2 要使用容器必须需要在内核级支持2中技术 namespaces 名称空间 Control Group(cgroups) 控制组 (1)为什么centos6 版本不能使用容器? 因为centos6 内核版本是2.6:容器需要一个user的名称空间,直到内核3.8版本才有:  namespace 系统调用参数  隔离内容  内核

docker基础入门之二

一.docker文件系统: linuxFS包括boot file system 和 root file system boot file system (bootfs),包含bootloader和kernel,在系统启动完成后,kernel滞留内存,bootfs解除挂载: root file system(rootfs),包括类似/bin,/usr, /lib等目录,这些和kernel无关,这也是不同linux发行版本的差异所在:       Linux  FS Linux FS in Dock

docker基础入门

docker安装配置系统版本(centos 6.5 x64) 注意:centos系统版本需要是centos 6 以上,并且系统需要是64位才能安装docker,如果是不是64位系统安装的时候会提示找不到docker-io 简介:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app).几乎没有性能开销,可以很容易地在

docker基础入门之一

一.概述 dotCloud是docker公司的前身,专注于PaaS的云计算平台:可能是支持最广泛的PaaS平台: 使用container的概念来解决应用stack部署的难题: 定义:什么是docker 开源的应用容器引擎,方便打包发布应用到容器中: Go语音领域比较大型的应用: docker实现: docker是container技术的实现,最早使用LXC作为container的引擎,最新版本的docker使用libcontainer替换了lxc: 采用aufs文件系统来管理Image和cont

1、Docker基础入门实战

1.系统版本 [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 2.关闭selinux [[email protected] ~]# sed -i 's/=enforcing/=disabled/g' /etc/selinux/config [[email protected] ~]# getenforce Enforcing [[email protected] ~]# set

Docker基础入门总结

一.什么是Docker 官方文档描述:“Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrast

Docker基础入门篇

参考资料 Docker官网 Docker介绍 Docker是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低. 原文地址:https://www.cnblogs.com/feiqiangsheng/p/11179365.html