Docker:如何构建的简洁高效的 API

1,514 阅读5分钟
原文链接: www.codeceo.com

在API的领域内,目前很少有名字能像Docker一样如雷贯耳。Docker之所以能够成为一个开发者们热捧的开源平台,是因为它能够仅仅通过一个应用程序,就向API用户提供一个完整的开发生态系统。

Docker的流行并不难被理解。Docker是一个易用的系统,它能够将代码、运行、系统工具和库整合在一起——基本上囊括了你能够安装到一台服务器上的所有东西。所以,它使得开发者们能够轻松地创建、部署和运行应用程序。

Docker101:把所有东西装进容器中

那么到底什么是Docker呢?简单来说,Docker就是一个轻量级Linux容器的实现,它允许虚拟化一个包含自己进程和网络空间的环境。Docker通过在操作系统层面上提供额外的抽象和虚拟自动化,把应用程序自动地部署在了这些软件容器中。相比于创建一个完整的虚拟机,这些容器只是位于同一个Linux实例之上,并能够提供应用程序在其内部运行的小空间而已。

Docker容器最好的特性之一就在于它允许开发者打包一个应用程序需要的全部内容,包括库和额外的依赖项,然后作为一个独立的包进行发布。通过这样的方式打包应用程序,你就不再需要单独运行一台虚拟机,也就意味着你可以在你的一台Linux主机上部署足够多你想发布的应用了。同时由于不再需要为每一个应用程序增加一台虚拟机,你手上的主机也确确实实有了更多的可供使用的处理能力——可以用来安排更多的容器或者部署你想要运行的其它的应用。

简化API开发

正如我们前文所述,Docker在一个应用程序里就向API用户提供了一个完整的开发生态系统,这使得在运行环境下的API系统得到了极大的简化。每个Docker容器里就只是包含了一个应用程序和其所有的依赖文件,而与其它应用的容器在同一个主机系统上共享了同一个内核。

这意味着容器将可以自由地在任何系统中使用,它甚至舍弃了了原本虚拟机操作系统里通常需要的包含的东西——包括二进制文件和库。如此,这样的API系统就只需要包含它确实需要的内容了。

为什么选择Docker?因为好处多多

既然上面已经阐述了这么多的背景知识,那么到底是什么让Docker成为了一个真正好的选择呢?主要原因如下:

它是开放的。因为Docker的开放标准带来了能够兼容Linux和Microsoft操作系统环境的巨大优势,它能够支持绝大多数基础设施的配置,同时它还允许了对代码库的透明。

它是安全的。在传统的模型中,破坏一个API应用可以轻易地导致整个系统的问题,而与传统的相互依赖的模型不同,通过Docker容器的使用,我们能够实现每一个正在处理的应用程序与其他的程序相互的隔离。如果你有一个部署在Docker容器中的web API,你还可以强制使用HTTPS作为附加的加密。而且,因为Docker是一个开放的系统,Docker的使用者们也会定期地检查系统的安全漏洞。除此之外,你还可以通过访问Docker security center来获取更多Docker相关的工具和练习。

它缩短了开发时间。Docker容器的构建、启动和镜像保存都是相当简单的。它还可以方便地将一个已经存在的镜像迁移到已经存在的Docker容器中。此外,因为开发的生态系统已经封装完成,你可以投入更多的时间用于代码的编写上,而不是应用程序所需环境的管理维护上。

它使用常用的文件系统和镜像。Docker部署的是常用的文件系统和镜像,并共享基本内核给API应用程序使用。所以,包含多依赖项的API应用程序在使用Docker后能减少冗余的依赖将系统资源对系统的消耗而腾出更多的空间,同时这个API程序的容器也将被更容易的使用与理解。

尝试一下

综上好处,Docker是一个相当简单易用的技术。Docker可以通过读取Dockerfile里的指令来自动地创建:一个包含了你能在命令行中调用来生成镜像的所有指令的文本文档。使用docker build,你可以创建一个能够通过执行若干命令行指令自动地创建新的镜像。

通过指定特定位置PATH或者URL的Dockerfile文件和环境,docker build命令就可以创建一个镜像了。PATH是你本地文件系统的目录,URL是Git仓库的位置。在当前的目录下使用简单的创建命令如下:

$ docker build .

Sending build context to Docker daemon  6.51 MB

如果你想要在创建环境中使用一个文件,Dockerfile这个指令就可以指向这个文件,类似于COPY指令。如果你想要提高它的性能,那么你可以通过增加一个.dockerignore文件,来从你当前的目录中排出一些文件和目录。

Dockerfile位于当前的根目录下。你可以通过使用docker build的–f flag指向你的文件系统里任意位置的Dockerfile。

你还可以指明一个仓库和表指明你想在哪里保存一个新的镜像,通过提供一个创建的指令:

$ docker build -t shykes/myapp .

Docker后台守护程序将会运行你的步骤,然后向你提交出一个新的镜像和其ID,并自动地清理相关的环境。

更多关于Docker的深入讨论和新的样例指令,你可以访问这个Docker在线教程。

本文作者:Sheena Chandok  本文译者:码农网 – 任琦磊

外文链接:Docker: A Simple, Powerful Approach to APIs

本文选自:码农网