【Docker】Docker概述

简介: 【Docker】Docker概述

docker是一个应用容器引擎项目,基于go语言开发,开源。官方文档也是非常详细,只不过是英文的,但是只要想看,肯定能克服。


docker火爆至今,镜像仓库里的内容也非常丰富了,日常用的环境很多在里面可以直接找到。


1. Docker为什么会出现


先提几个场景:


  1. 运维帮你开发的项目部署到服务器上,告诉你有问题启动不起来。你在本地跑了一下发现没问题...


  1. 要上线的项目因为一些软件的版本的更新,导致不可用了...


  1. 有项目涉及到的环境内容非常多,各种中间件,各种配置,还要部署好多台服务器...

这些问题其实总结起来就是跟环境有关。


要避开各种因环境不同导致的问题,那么最好是在部署项目的时候,连同项目所需要的各种环境一起部署了最好。


比如,项目中涉及到redis、mysql、jdk、es等环境,在部署jar包的时候把整个环境都带上。那么问题来了,怎么样能让项目带上环境一起呢?


Docker就是来解决这个问题的!


还是有些不清楚?再来打个比方。


我们在手机按装个安卓应用,那么从这个应用诞生到被安装的过程大致是这样的:


java开发 ——> apk ——> 发布到各大应用商店 ——> 用户A 下载apk安装即可使用


站在用户的角度,我根本不关心这个app需要依赖哪些环境的问题,下载下来安装就完事儿。按照这个思路,在来看docker:


java开发 ——> jar包 ——> 打包项目带上各种环境(成为一个镜像) ——> 镜像放到docker仓库里 ——> 运维童鞋下载镜像,直接运行。


2. Docker的核心思想


1268169-20210509230828829-497161983.png


这个就是docker的logo,一条装满集装箱的鲸鱼,在鲸鱼背上,集装箱相互之间是隔离的,这也就是docker的核心思想了。


比如之前有多个应用在同一台服务器上运行,可能会有软件的端口占用冲突,现在隔离后就可以独自运行了。另外,docker可以最大化的利用服务器的能力。


3. Docker和传统虚拟化的区别


在docker容器技术兴起之前,基本上是用虚拟机,比如VM。如果你想在window上装个linux系统进行一些练习,那么就可以在VM里安装linux系统。


1268169-20210510125000901-1012422762.png


如图所示,我在win系统里运行linux系统,那我的win系统就是个宿主机(灰色区域)。蓝色部分就相当于是我在vm上安装的linux系统,从下到上,分别是内核、库、各种应用,在一台电脑上可以运行很多应用。


但是虚拟机非常的笨重,要虚拟整个系统,软件硬件都有,一个虚拟机就相当于一台电脑,所以启动虚拟机占用的资源很大,启动速度也很慢。


容器技术虽然也属于虚拟化技术,但是容器非常轻量化。比如linux容器,不再对模拟一个完整的操作系统,如果我只用到linux内核,那其他的东西就可以不要。


将软件运行所需要的资源打包到一个容器中,并且是隔离的,相当于集装箱。


1268169-20210510125526763-1539792891.png


如图所示:


在容器内的应用进程是直接运行于宿主机的内核,容器内没有自己的内核,更没有进行硬件的虚拟。容器就不再使用一个公共的lib库了,每个容器都有一个自己的lib,

只包含运行自己的APP所需要的。容器之间相互隔离,各自有着属于自己的文件系统,谁也不影响谁,启动速度也快到了秒级。


4. Docker可以干嘛


  1. 让应用能够更快的交付和部署。
    之前部署环境要安装一堆东西,现在用docker,打包成镜像发布测试,一键运行。
  2. 更便捷的升级和扩容。
    使用docker之后,部署应用简单得像搭积木。比如项目打包镜像发布运行后,发现需要增加服务器提高服务性能,那么可以直接在新的服务器上直接下载运行镜像。
  3. 更简单的系统运维。
    容器化之后,可以让开发、测试环境高度一致。
  4. 更高效的计算机资源利用。
    docker是内核级别的虚拟化,可以在一个物理机上运行很多的容器实例。比如一个机子上我同时运行tomcat、es、kibana等等,更充分的利用系统资源。
相关文章
|
6月前
|
负载均衡 Shell Docker
Docker-Compose概述
Docker-Compose概述
|
6月前
|
Linux Go API
Docker入门概述
Docker入门概述
|
6月前
|
应用服务中间件 开发工具 nginx
Docker概述 、 部署Docker 、 Docker镜像 、 Docker基本命令
Docker概述 、 部署Docker 、 Docker镜像 、 Docker基本命令
265 0
|
23天前
|
存储 监控 Linux
Docker技术架构概述
【10月更文挑战第22天】Docker采用CS架构,Client与Daemon交互,Compose管理多容器应用。
|
6月前
|
缓存 Linux 虚拟化
Docker 概述与安装
Docker 概述与安装
81 2
|
6月前
|
Linux 应用服务中间件 nginx
docker概述、安装、常用命令
docker概述、安装、常用命令
102 1
|
6月前
|
运维 虚拟化 开发者
Docker的概述
Docker的概述
52 0
|
Java Linux 虚拟化
Docker从入门到精通——Docker概述
Docker从入门到精通——Docker概述
98 0
|
存储 Ubuntu Linux
Docker(四)进阶:Docker镜像概述和分层原理
镜像是一个只读模板,带有创建Docker容器的说明。通常,一个镜像基于另一个镜像,并带有一些额外的定制。例如,您可以构建一个基于ubuntu镜像的镜像,但是要安装Apache web服务器和您的应用程序,以及运行应用程序所需的配置细节。
1231 0
Docker(四)进阶:Docker镜像概述和分层原理
|
NoSQL 关系型数据库 MySQL
下一篇
无影云桌面