如果您想要进入微服务开发,您将希望在您的机器上运行多个东西。让服务、数据库、消息代理等在您的机器上工作而没有冲突可能是非常困难的。Docker完美地解决了这个问题。
那么,什么是docker,为什么它如此重要?Docker允许您在自己的机器上运行不同的软件……但是等等——难道您还不能那样做吗?是的,你可以,但不能像Docker那样方便。
您可能遇到过虚拟机,在您的机器上执行另一个操作系统的想法与您的机器完全分离。容器非常相似,而且大多数情况下更好!您有类似的分离级别(我们知道删除内容或处理端口冲突等有多难),但是操作系统层不会对每个容器(就像对虚拟机一样)进行整体复制。
看看这个图,希望能让大家明白:
一旦您安装了Docker,您将能够在您的计算机上以非常低的开销运行不同的软件。那么,为什么要等?现在就开始使用Docker吧 !
Getting Docker
那么,你是如何获得Docker的呢?有什么主要的先决条件吗?现在Docker在Windows、Mac和Linux上运行良好。安装说明可能有点不同,但是您可以在https://www.docker.com/community-edition上找到所需的大部分内容。Docker的社区版将很好地满足您的开发需求。有企业版本可用,但是这些版本要昂贵得多,并且对于本地开发来说不是必需的。
docker如何帮助您的开发
这是有趣的部分!我假设你已经安装了Docker(无论在哪个操作系统上,下面的操作都不会有什么影响!)假设您想在您的机器上运行MongoDB。您不再需要自己安装它。您可以从https://hub.docker.com/_/mongo/获得它——这是MongoDB的官方映像存储库。您可以按照这里提供的说明进行操作,可归结为如下操作:
$ docker run——命名为mongo -d mongo
这将把MongoDB的docker映像下载到您的机器上,并自动公开端口27017以便您进行连接。要做到这一点,您可以从文档中看到,您需要的是:
$ docker run --link some-mongo:mongo -rm mongo sh -c "exec mongo mongo $MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/test"
如果您想要连接应用程序并将其用作MongoDB——没问题!但是,我建议您首先阅读文档,了解您可能需要的任何配置。所以运行Mongo很好,但是它还能做什么呢?
Docker和微服务。
您已经看到Docker作为一种开发工具非常有用,但这还不是全部!Docker也非常适合部署应用程序。我遇到的最适合Docker的云之一是Digital Ocean。这个空间变化很快,所以如果您对部署Docker容器感兴趣,可以去网上搜索一下,看看哪个公司提供的服务最好。您可以使用AWS和Azure也没有任何问题。
实际上,对于生产系统,您可能不希望使用裸Docker容器。对于真正的微服务部署,您可能需要复制并轻松地扩展容器。
在写这篇文章的时候,我发现到有两种主流的解决方法:
Kubernetes -绝对令人惊叹的集装箱编配系统,诞生于谷歌的Borg项目
Docker群集- Docker本地解决编配问题的答案,比Kubernetes不成熟
Docker和容器还有很多。Docker不是一个开源项目,但是基于Docker的开源社区有很大的努力。如果您对这个领域感兴趣,那么Moby项目和Containerd是您的首选开源想法。这些可能成为未来的首选容器解决方案……
这是一个非常活跃的空间,所以我建议深入地学习它,留意任何变化。如果您想成为一名微服务开发人员(或者可能是任何服务器端开发人员),您将必须熟悉这些概念和技术。
总结
Docker是开发工作站上的一个很好的工具。它使您能够轻松地尝试和测试过去可能难以处理的技术和解决方案。除此之外,Docker和容器是在处理微服务时理解和使用的核心内容。Kubernetes和Docker集群等工具正变得越来越普遍。如果您想参与现代开发,您需要熟悉这些概念和技术。