Docker-第1部分:什么是Docker?

image

原文: https://towardsdatascience.com/learn-enough-docker-to-be-useful-b7ba70caeb4b
做者:Jeff Hale
翻译:付新圆

容器对于提升软件开发和数据科学中的安全性、可重复性和可伸缩性很是有用。容器的崛起是当今科技领域最重要的趋势之一。python

Docker是一个用于在容器中开发、部署和运行应用程序的平台。Docker本质上是容器化的同义词。对于有抱负的软件开发人员或数据科学家来讲,Doc​​ker就是他们的将来。docker

image

若是您还不适应最新技术,请不要担忧——本文将帮助您理解Docker的概念,了解Docker的过程能够想象成是制做披萨的过程。ubuntu

在本系列有五篇文章,以后的四篇文章咱们将会讲解Docker术语、Dockerfiles、Docker镜像、Docker命令和数据存储。阅读完这个系列(再加上一点练习),你将会了解不少Docker发挥的做用😃!浏览器

Docker的类比

首先,阐明一下Docker的类比。安全

谷歌中对类比的第二个定义是:服务器

象征物被认为是其余事物的表明或象征的事物,尤指抽象的事物。

类比能够帮助咱们理解新的事物。例如,物理容器的类比能够帮助咱们快速掌握虚拟容器的本质。机器学习

image

图为物理容器学习

容器

如下是塑料容器对照Docker容器的类比:ui

  1. 容纳东西——东西要么在容器内,要么在容器外;
  2. 便携式——可在本地计算机、远程计算机或云提供商的服务器(例如AWS)上使用。就像盒子同样,你能够随时移动。
  3. 具备清晰的访问接口——物理容器有一个盖子,用于打开和放入物品以及取出物品。一样,Docker容器具备多种与外界交互的机制。它具备能够经过打开浏览器进行交互的端口,您能够经过命令行将其配置为与数据交互。
  4. 能够从远程位置获取——当您须要用到塑料容器时,您能够网购一个,这些塑料容器是商家从制造商那里购买的,这些制造商经过一个模具就能将数千个塑料容器冲压出来。对于Docker容器,异地注册表会为容器保存一个像模具的镜像。而后,当您须要一个容器时,就能够从图像中制做一个。

与虚拟Docker容器不一样,网购的塑料容器须要花费钱,而且商家也不会提供商品副本。spa

实例

Docker容器的第二种类比是能够将其视为一个有生命的的实例。实例是以某种形式存在的东西,不只仅只是代码,正是这些代码赋予了Docker容器生命。像其余生物同样,实例最终将死亡-这意味着容器将关闭。

Docker容器是Docker镜像的生命表现。

软件程序

除了容器类比和实例类比,您还能够将Docker容器视为软件程序。毕竟,Docker容器确实是软件,在最基本的层次上,容器是一组操纵其余位的指令。

image

图为容器是代码

当Docker容器运行时,一般会有程序在运行。容器中的程序执行操做,应用程序也对应执行相关操做。

例如,Docker容器中的代码已经实时将网页上读取的内容发送了您,或者可能会将您的语音命令带到Amazon Alexa,并将其解码为另外一个程序并在不一样容器中使用的指令。

使用Docker,您能够在主机上同时运行多个容器,和其余软件程序同样,Docker容器能够运行、检查、中止和删除。

概念

虚拟机

虚拟机是Docker容器的前身,它能够隔离应用程序及其依赖项。可是,Docker容器优于虚拟机,由于它们占用的资源更少,很是便捷,而且启动速度更快。

Docker镜像

在本文中,术语“ 镜像 ”的含义没法很好地映射到物理镜像。

image

Docker镜像更像是蓝图、饼干切割机或模具。镜像是不可变的主模板,用于抽取彻底相同的容器。

image

镜像包含应用程序运行所需的Dockerfile、库和代码,全部这些都是捆绑在一块儿的。

Dockerfile

Dockerfile 是一个文件,其中包含Docker应如何构建图像的说明。

Dockerfile引用用于构建初始镜像层的基础镜像。流行的官方基础镜像包括pythonUbuntualpine

而后,根据Dockerfile中的说明,能够将其余层堆叠在基本镜像层的顶部。例如,用于机器学习应用程序的Dockerfile能够告诉Docker在中间层添加NumPy,Pandas和Scikit-learn。

最后,根据Dockerfile代码,在其余层之上堆叠了一个可写的薄层。(薄层的尺寸很小,在这里薄是一种类比)

在本系列的后续文章中,将会更深刻地探讨Dockerfiles。

Docker容器

Docker镜像加上命令docker run image_name,可从镜像建立并启动容器。

容器注册表

若是但愿其余人可以从本身的镜像中建立容器,则能够将镜像发送到容器注册表。Docker Hub是最大的注册表,也是默认的注册表。

用Docker烹饪

image

图为景观类比

  • 配方就像Dockerfile同样。它告诉您如何实现最终目标。
  • 成分是层。这个比萨饼有皮、酱汁和奶酪。

将食谱和食材想像成一体的披萨制做套件。这是Docker镜像。

配方(Dockerfile)告诉咱们咱们要作什么。计划以下:

  • 外壳是预成型且不可变的,就像基本的Ubuntu父镜像同样。它是最底层的,是首先被构建的。
  • 而后添加一些奶酪。将第二层添加到比萨饼就像安装一个外部库——例如NumPy。
  • 而后撒一些芝士。芝士就像运行应用程序的文件中编写的代码。

image

图为烤箱

  • 烤披萨的烤箱就像Docker平台同样。搬进烤箱并将烤箱安装到了本身的房子里,就能够制做东西了。一样,在计算机上安装了Docker,就能够制做容器了。
  • 经过旋转旋钮能够启动烤箱。该docker run image_name命令就像烤箱的旋钮同样——它能够建立并启动容器。
  • 煮熟的比萨就像一个Docker容器。
  • 吃披萨就像使用您的应用程序同样。

就像制做披萨同样,在Docker容器中制做应用程序须要一些工做,但最终您会拥的是很是有价值的。

总结

以上就是Docker概念的内容。在本系列的第2部分,将阐明在Docker生态系统中经常使用的一些术语。但愿本文对您了解Docker有所帮助,同时也但愿您看到类比在理解新技术中的价值。

相关文章
相关标签/搜索