Github已经54k个star的Docker,到底是什么?

Docker是一款基于Linux技术的轻量级虚拟化工具,提供持续交付、更快迁移、高效资源利用等优势。文章介绍了Docker的基本概念如镜像、容器和仓库,详细阐述了安装配置、Dockerfile的使用以及常用命令,旨在帮助读者理解并掌握Docker的使用。
摘要由CSDN通过智能技术生成

做开发的应该很多人都知道Docker,就算是没有用过,应该也有所耳闻。这款开源于2013年的工具一经问世,便迅速火爆起来,在微服务、项目迁移、云等方面备受欢迎。如今它的github项目已经达到54k个star。Docker到底是什么?它有什么优点使得它如此受欢迎?到底该怎么使用?本文就从以上几点进行阐述,希望通过这篇文章能够让大家对Docker有一个清晰的认识。

程序员宝藏库:https://github.com/Jackpopc/DevWeekly

什么是Docker?

img

Docker是由dotCloud公司发起并与2013年开源的一个项目,一径开源就备受欢迎,其主要项目至今在github已经54k个star。它是使用Go语言开发实现,基于Linux内核cgroup、namespace以及AUFS类等技术对进程进行封装隔离,属于一种操作系统层面的虚拟化技术。此后,进一步开发开始使用runC和containerd,进一步封装,从文件系统到网路互联,再到进行都进行隔离,极大的简化了容器的创建和维护,使得Docker比虚拟机更为轻便、快捷。

为什么要用Docker?

Docker与传统虚拟机一样,同属于虚拟化技术,但是它拥有众多虚拟机无法比拟的优势:

  • 持续交付和部署
  • 更快的迁移
  • 更高效的利用系统资源
  • 更快的启动时间
  • 一致的运行环境
  • 更轻松的维护和扩展

容器与虚拟机的对比详情如下:

img

对于大多数开发人员感受最为就是前两点:持续交付和部署更快的迁移

我想这对于很多开发人员都是一个很头疼的问题,在开发过程中会遇到这种抱怨:“在我电脑上可以运行啊?为什么换一台电脑就不行了?”

虽然诸如maven、nodejs的package.json、Python的requirement的出现使得迁移变得简单,但是它们更多的是使得在第三方工具包的迁移方面变得简单方面,但是在系统和开发环境方面却没有什么作用。docker确保了直行环境的一致性,可以在多平台上运行,使得应用迁移更加容易。此外,docker使用分层存储以及镜像技术,使得应用重复部分的复用更加容易,可以基于基础镜像做更多的扩展,使得系统的维护变得更加简单。

基本概念

使用docker接触最多的就是以下3个概念,

  • 镜像:image
  • 容器:container
  • 仓库:repository

了解这三个概念,对容器的整个生命周期便有了认识。在这里,我用简单的语言对上述3个概念进行描述

**镜像:**进行就相当于一个精简化的文件系统,例如官方提供的Ubuntu镜像,就只包含了最小化的root文件系统。

容器:容器是一个拥有自己root文件系统、自己网络配置、自己命名空间的进程。镜像和容器就像是编程中的实例,镜像时静态的定义,而镜像运行时的实体是容器。什么是类和实例?举一个编程的例子阐述一下,

# 类
class HelloWorld:
def __init__(self, x, y):
self.x = x
self.y = y

def add(self):
return self.x + self.y

# 实例
hello
  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值