原文作者:Jeff Hale

原文地址:https://towardsdatascience.com/learn-enough-docker-to-be-useful-b7ba70caeb4b

翻译:猪齿鱼技术团队

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

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

如果您还不适应最新技术,请不要担心——本文将帮助您理解Docker的概念,了解Docker的过程可以想象成是制作披萨的过程。

在本系列有五篇文章,之后的四篇文章我们将会讲解Docker术语、Dockerfiles、Docker镜像、Docker命令和数据存储。阅读完这个系列(再加上一点练习),你将会了解很多Docker发挥的作用!

Docker的类比

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

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

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

类比可以帮助我们理解新的事物。例如,物理容器的类比可以帮助我们快速掌握虚拟容器的本质。

图为物理容器

容器

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

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

与虚拟Docker容器不同,网购的塑料容器需要花费钱,并且商家也不会提供商品副本。

实例

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

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

软件程序

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

图为容器是代码

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

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

使用Docker,您可以在主机上同时运行多个容器,和其他软件程序一样,Docker容器可以运行、检查、停止和删除。

概念

虚拟机

虚拟机是Docker容器的前身,它可以隔离应用程序及其依赖项。但是,Docker容器优于虚拟机,因为它们占用的资源更少,非常便捷,并且启动速度更快。

Docker镜像

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

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

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

Dockerfile

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

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

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

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

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

Docker容器

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

容器注册表

如果希望其他人能够从自己的镜像中创建容器,则可以将镜像发送到容器注册表。Docker Hub是最大的注册表,也是默认的注册表。

用Docker烹饪

图为景观类比

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

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

配方(Dockerfile)告诉我们我们要做什么。计划如下:

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

图为烤箱

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

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

总结

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


本文由猪齿鱼技术团队原创,转载请注明出处:猪齿鱼官网

Docker入门系列之一:什么是Docker?的更多相关文章

  1. Docker入门系列之二:Docker术语

    原文作者:Jeff Hale 原文地址:https://towardsdatascience.com/learn-enough-docker-to-be-useful-1c40ea269fa8 翻译: ...

  2. Docker入门系列之一:在一个Docker容器里运行指定的web应用

    实现题目描述的这个需求有很多种办法,作为入门,让我们从最简单的办法开始. 首先使用命令docker ps确保当前没有正在运行的Docker实例. 运行命令docker run -it nginx: 然 ...

  3. Docker入门系列之三:如何将dockerfile制作好的镜像发布到Docker hub上

    这个系列的前两篇文章,我们已经把我们的应用成功地在Docker里通过nginx运行了起来,并且用dockerfile里制作好了一个镜像. Docker入门系列之一:在一个Docker容器里运行指定的w ...

  4. Docker入门系列(一):目标和安排

    Docker入门系列(一) 这个系列的教程来源于docker的官方文档,此文档的目的在于一步一步学习docker的使用方法. 这一系列的教程有如下几篇文档: docker安装启动 构建第一个docke ...

  5. Docker入门教程(八)Docker Remote API

    Docker入门教程(八)Docker Remote API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote ...

  6. Docker入门教程(七)Docker API

    Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...

  7. Docker入门教程(五)Docker安全

    Docker入门教程(五)Docker安全 [编者的话]DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通 ...

  8. Docker入门教程(四)Docker Registry

    Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...

  9. Docker入门系列3:使用

    入门 首先强烈建议玩一遍官方的入门教程,Interactive commandline tutorial,下面是答案: 查看版本:docker version 搜索Image:docker searc ...

  10. Docker入门系列之五:15个 Docker 命令

    在这篇文章中,我们将学习15个Dockers CLI命令.如果你还不了解Docker,请查看这个系列的其他部分进行学习,Docker概念,生态系统,Dockerfile,Docker镜像. Docke ...

随机推荐

  1. vue3.0安装

    一 .vue3.0安装 vue3.0安装 个人推荐以下2种 (1). 开发工具的对应代码中 插入CDN <script src="https://unpkg.com/vue@next& ...

  2. Java-SpringBoot注解方式实现AOP

    AOP基本总结 连接点(JoinPoint): 连接点是程序运行的某个阶段点,如方法调用.异常抛出等 切入点(Pointcut): 切入点是JoinPoint的集合 是程序中需要注入Advice的位置 ...

  3. Use iTunes on Linux

    Today I installed iTunes (Windows installer) via wine. But after installation it didn't work. Then I ...

  4. MySQL学习01(初识MySQL)

    初识MySQL 只会写代码的是码农:学好数据库,基本能混口饭吃:在此基础上再学好操作系统和计算机网络,就能当一个不错的程序员.如果能再把离散数学.数字电路.体系结构.数据结构/算法.编译原理学通透,再 ...

  5. MongoDB 数据库创建删除、表(集合) 创建删除、数据增删改查

    使用数据库.创建数据库 use student 如果真的想把这个数据库创建成功,那么必须插入一个数据. 数据库中不能直接插入数据,只能往集合(collections)中插入数据.不需要专门创建集合,只 ...

  6. 数学log的基本知识

    在数学中,对数是对求幂的逆运算,正如除法是乘法的倒数,反之亦然.这意味着一个数字的对数是必须产生另一个固定数字(基数)的指数, 在简单的情况下,乘数中的对数计数因子.如果a的x次方等于N(a>0 ...

  7. mysql 局域网连接

    下面分别简述操作: 配置虚拟机网络 默认方式是NAT,但为了让宿主机之外的其它计算机也能访问虚拟机,NAT方式配置起来有些复杂,这里推荐用桥接模式,关于VM的几种网络方式的区别,可以参考这篇文章配置好 ...

  8. C语言之----面向对象的方法实现链表的操作

    1 /* 2 * 详细运行过程: 本程序实现的是对链表的简单的操作,即链表的增 删 改 查 销毁 初始化 3 * 运用面向对象的思想,实现一个类op,op中包括了所有的链表操作方法 4 * 其他的程序 ...

  9. 关于windows下 python3安装 cython的说明

    针对python3.6希望在windows环境下安装cython,但是网上任何关于mingw的尝试都没有生效.所以只能下载 vs, 1.去官网https://visualstudio.microsof ...

  10. 基于mysql和Java Swing的简单课程设计

    摘要 现代化的酒店组织庞大.服务项目多.信息量大.要想提高效率.降低成本.提高服务质量和管理水平,进而促进经济效益,必须利用电脑网络技术处理宾馆酒店经营数据,实现酒店现代化的信息管理.本次课程设计运用 ...