Docker-再次征途

tech2022-09-19  60

目录

概述

那docker到底是什么?

docker相关产品/组件

Docker主要概念

Docker和虚拟机的区别


 

概述

在2015年的时候,docker已经开始火热起来,随着docker技术发展,越来越多人使用docker。我自己是在2015年开始接触docker,我觉得这个玩意对于不喜欢运维部署的开发人员来说,简直是一块“宝”。我自己当时还是主要做Java开发工作,虽然不是很反感运维部署这块工作,但这块工作其实还是挺花时间的。特别是像一些兼容性问题,总是在打补丁,太浪费时间了。docker技术大大的节约这方面的时间成本,尤其我们需要部署在多个环境,docker技术就非常方便了。

我们先到docker官网(https://www.docker.com/)认识一下docker。

官网首页里提到:

We help developers and development teams build and ship apps.

译:

我们帮助开发人员和开发团队构建和发布应用程序。

那docker到底是什么?

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

docker相关产品/组件

我们常用的,主要有两个,docker hub和docker Desktop。

Docker Hub:

Docker Hub是世界上最大的容器图像存储库,其内容源包括容器社区开发人员、开源项目和独立软件供应商(ISV)在容器中构建和分发代码,用户可以访问免费的公共存储库来存储和共享图像。

Docker Desktop:

Docker Desktop是一个易于安装的应用程序,适用于Mac或Windows环境,使您能够在几分钟内开始编码和容器化。Docker Desktop包括从您的机器上构建、运行和共享容器化应用程序所需的一切。

Docker主要概念

我们先看官网怎么描述Image和Container。

原文:

Fundamentally, a container is nothing but a running process, with some added encapsulation features applied to it in order to keep it isolated from the host and from other containers. One of the most important aspects of container isolation is that each container interacts with its own private filesystem; this filesystem is provided by a Docker image. An image includes everything needed to run an application - the code or binary, runtimes, dependencies, and any other filesystem objects required.

大概意思是:容器是一个正在运行的进程,并独立封装,以便使它与主机和其它容器隔离。容器隔离的一个最重要的方面是每个容器与它主机的私有文件系统交互,相互不干涉,做到完全隔离,而且这个文件系统是由Docker镜像提供,包含了运行应用程序所需的所有内容(代码或者二进制文件)、运行环境、依赖包以及所需要的其它文件系统。

总结:

Image(镜像):相当于是一个完整独立系统。

Container(容器):容器是镜像运行时的实体。

除了这两个概念外,Repository(仓库),简单来说,是用可看成一个代码控制中心,用来保存镜像的。

Docker和虚拟机的区别

当大家初步了解docker后,很多人都会联想到另外一个概念——虚拟机,觉得Docker和虚拟机有点类似,特别是docker里面的Container(容器)这个概念。那我们下面就对比一下两者的区别。

官网原文:

A container runs natively on Linux and shares the kernel of the host machine with other containers. It runs a discrete process, taking no more memory than any other executable, making it lightweight.

By contrast, a virtual machine (VM) runs a full-blown “guest” operating system with virtual access to host resources through a hypervisor. In general, VMs incur a lot of overhead beyond what is being consumed by your application logic.

大概意思:

Container(容器)在Linux上以本机方式运行,并与其它容器共享主机的内核。而且是轻量级的,占用的内存基本都小于我们常规运行的程序。虚拟机运行着是一个完整的操作系统,虚拟访问主机资源。一般而言,虚拟机会比容器消耗更多资源。

我们可以看以下图来再详细对比一下:

 

 

最新回复(0)