[ Docker ] Start learning Docker

这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战web

微信公众号搜索【程序媛小庄】 - 没有白走的路,每一步都算数面试

前言

今天介绍一下如今很是流行的技术-Docker,如今出去面试或者在公司开发docker几乎要成为必须掌握的技术了,一块儿来看看吧。redis

Docker官网

官方网站:www.docker.com/docker

中文网站:www.docker.org.cn/flask

什么是Docker

Docker是一个开源的引擎,能够轻松的为任何应用建立一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试经过的容器能够批量地在生产环境中部署,包括VMs(虚拟机)、 bare metal、OpenStack 集群和其余的基础应用平台。windows

上面说了一堆,Docker简单总结来讲就是一种容器技术。而容器是用来装东西的。抛开容器这个概念,在使用Python进行web开发是,使用较多的两种就是Django web项目和flask web项目,无论使用哪一种框架在程序开发的过程当中大几率都会对数据进行操做,就会应用到MySQL Redis等,既然项目中用到了就须要在本身的电脑或者是服务器上进行安装才能使本身的web服务正常运行。centos

同时还存在一个问题,若是本地开发环境是windows而生产环境是Linux,若是不当心软件版本不一致,可能就会出现经典的一幕在我电脑上跑得好好的,怎么到服务器上就不行呢!服务器

docker就提供了颠覆式的容器化技术,在Python web应用中一样使用MySQL Redis,却不是直接使用安装在本地的软件,而是面向docker容器,在docker容器中安装web应用中所须要的软件程序。微信

所以使用docker有一个很是大的好处:可以保证程序的环境高度一致。markdown

为何是Docker

可能有小伙伴有疑问了,仍是以为以前的方式好,web应用中用到就安装,若是使用Docker不是多了一步吗?在开发程序前还要安装Docker,总以为多了一步。那为何docker还这么火呢?XDM能够考虑一下下述几种状况:


我电脑上跑得好好的,怎么到服务器上就不行呢?

咱们以Python web程序为例,一个Python web程序可能会涉及不少应用软件,好比redis MySQL rabbitmq等环境,当这些其中某一项版本不一致时,可能就会致使web应用没法正常运行,而Docker能够将程序和使用的软件环境直接打包在一块,不管在哪一个机器上都保证了环境一致。


服务器本身的程序挂了,结果发现是别人的程序除了问题把内存吃完了,本身的程序内存不够崩了?

这种也是比较常见的一种状况,本身的项目重要程度通常,和别人共用一台服务器,因此不可避免的会受到其余程序的干扰,致使本身的程序出现问题。Docker就很好的解决了环境隔离的问题,别人程序不会影响到本身的程序。


访问频次很是高的web应用,公司须要多部署几十台服务器,运维XDM要哭了~

在没有Docker的状况下,要在短期内部署几十台服务器,运维XDM表示臣妾办不到~并且还不能保证每台服务器的环境一致,就会出现各类问题。使用Docker只须要将程序打包成镜像,你要多少台服务器,轻轻松松搞得定,按时下班不香吗?

所以总结下来使用Docker好处多多,具体为一下几点:

1. 一致的运行环境,程序可以更加方便的迁移
2. 对进程进行封装隔离,容器与容器之间互不影响,是操做系统级别的隔离
3. 很是轻松的经过镜像复制N过个如出一辙的容器
复制代码

Docker与虚拟机

又有XD问了,说Docker是操做系统级别的隔离,运行一个服务就至关于运行一个操做系统,那么一台机器上运行多个服务真的OK吗?毕竟操做系统是那么一个你们伙。

Docker若是想要使用就必须创建在硬件的基础之上,好比本身的笔记本,可是咱们不会直接去操做笔记本的硬件,而是经过在笔记本上安装操做系统帮助咱们操做计算机的硬件。若是想要使用docker,又必须在操做系统上安装docker引擎,才可能运行各类docker容器。

若是在不使用docker的前提下,在windows环境中更好的模拟生产环境,一般会在计算机中安装虚拟机软件(VMware),安装完虚拟机软件以后必须在该软件上安装操做系统(centos),在这个基础上在安装MySQL redis等软件。

image-20210803144341275

那么docker会不会像虚拟机同样很是占用系统资源呢?

虚拟机必须携带操做系统才能运行,自己很小的虚拟机程序由于携带了庞大的操做系统就会变得的很是笨重而且很是占用宿主机的资源。在调用宿主机的计算机硬件资源时,虚拟机须要虚拟化内存整个调用过程是虚拟内存->虚拟物理内存->真正的物理内存。

而Docker是不携带操做系统的,所以docker应用很是轻巧,所以不会很是多的占用系统资源。docker利用docker引擎直接调用宿主机的资源,此时过程是虚拟内存->真正的物理内存。

image-20210803144314497

下面是docker与虚拟机的一个对比:

传统虚拟机 docker
磁盘占用 几个GB到几十个GB 几十MB到几百MB
CPU和内存 虚拟操做系统很是占用CPU 和内存 docker引擎占用极低
启动速度 从开机到运行项目大概几分钟 从开启容器到运行项目十几秒
安装管理 专门的运维人员 简单的命令操做
应用部署 每次部署都累得要死要活 从第二次部署开始很是方便简单
耦合性 多个应用安装到一块儿互相影响 每一个应用一个容器

结语

文章首发于微信公众号程序媛小庄,同步于掘金

码字不易,转载请说明出处,走过路过的小伙伴们伸出可爱的小指头点个赞再走吧(╹▽╹)

相关文章
相关标签/搜索