Microservices工具箱- Docker

如果您想要进入微服务开发,您将希望在您的机器上运行多个东西。让服务、数据库、消息代理等在您的机器上工作而没有冲突可能是非常困难的。Docker完美地解决了这个问题。

Docker 和 Containers

那么,什么是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很好,但是它还能做什么呢?

  • Kafka – https://hub.docker.com/r/wurstmeister/kafka/
  • Distribution of Ubuntu – https://hub.docker.com/_/ubuntu/
  • Jenkins – https://hub.docker.com/_/jenkins/
  • PostgreSQL – https://hub.docker.com/_/postgres/
  • Apache Flink – https://hub.docker.com/_/flink/
  • Pretty much any technology you ever wanted to try
  • Run your microservices
  • 无论您想要什么都可以,您都可以创建自己的docker映像!

Docker和微服务

您已经看到Docker作为一种开发工具非常有用,但这还不是全部!Docker也非常适合部署应用程序。我遇到的最适合Docker的云之一是Digital Ocean。这个空间变化很快,所以如果您对部署Docker容器感兴趣,可以去网上搜索一下,看看哪个公司提供的服务最好。您可以使用AWS和Azure也没有任何问题。

实际上,对于生产系统,您可能不希望使用裸Docker容器。对于真正的微服务部署,您可能需要复制并轻松地扩展容器。

在写这篇文章的时候,我发现到有两种主流的解决方法:

Kubernetes -绝对令人惊叹的集装箱编配系统,诞生于谷歌的Borg项目

Docker群集- Docker本地解决编配问题的答案,比Kubernetes不成熟

Docker和容器还有很多。Docker不是一个开源项目,但是基于Docker的开源社区有很大的努力。如果您对这个领域感兴趣,那么Moby项目和Containerd是您的首选开源想法。这些可能成为未来的首选容器解决方案……

这是一个非常活跃的空间,所以我建议深入地学习它,留意任何变化。如果您想成为一名微服务开发人员(或者可能是任何服务器端开发人员),您将必须熟悉这些概念和技术。

总结

Docker是开发工作站上的一个很好的工具。它使您能够轻松地尝试和测试过去可能难以处理的技术和解决方案。除此之外,Docker和容器是在处理微服务时理解和使用的核心内容。Kubernetes和Docker集群等工具正变得越来越普遍。如果您想参与现代开发,您需要熟悉这些概念和技术。

原文发布于微信公众号 - 程序你好(codinghello)

原文发表时间:2018-06-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ImportSource

Docker架构里那些名字背后的秘密

Docker作为一个linux平台上一款轻量级虚拟化容器的管理引擎。在短短的两三年内火得不得了。人人都在说docker,大大小小的容器summit。 Docke...

41050
来自专栏人称T客

Docker容器服务需要牢记的五个问题|资讯

关键词:Docker,容器服务 ? 进入2015年,容器技术突然开始变得炙手可热,特别是随着Docker的出现,更是将容器技术推向了顶峰,甚至让人有一种错觉—...

29550
来自专栏程序人生 阅读快乐

第一本Docker书(修订版)

Docker是一个开源的应用容器引擎,开发者可以利用Docker打包自己的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚...

10210
来自专栏北京马哥教育

利用Docker开启持续交付之路

持续交付即Continuous Delivery,简称CD,随着DevOps的流行正越来越被传统企业所重视。持续交付讲求以短周期、小细粒度,自动化的方式频繁...

42450
来自专栏云计算D1net

IT人士需要了解的云中容器的术语

如今如果没有提及容器,就很难谈论云计算。无论技术新手还是经验丰富的专家,都需要了解与云中容器相关的这些关键术语。 随着云计算中容器的普及,更多的组织选择不考虑...

374110
来自专栏美团技术团队

美团点评Docker容器管理平台

本文介绍美团点评的Docker容器集群管理平台(以下简称“容器平台”)。该平台始于2015年,是基于美团云的基础架构和组件而开发的Docker容器集群管理平台。...

51770
来自专栏CSDN技术头条

Docker 1.9版本修复互联和存储的缺陷

Docker 1.9发布了,并且它修复了Docker用户长期以来的顽疾:互联(Networking)。 Multi-Host Docker Networking...

19470
来自专栏云计算D1net

开发者可以使用Docker做什么?

有些开发者可能还是不明白 Docker 对自己到底有多大的用处,因此翻译 Docker 个人用例 这篇文章中来介绍 Docker 在普通开发者开发过程中的用例。...

51580
来自专栏跟我一起学Docker

第三章 Docker常用命令

Docker的环境安装完成之后,那就开始我们的Docker之旅吧。如何学习Docker呢?这是一个值得思考的问题,刚开始接触Docker的时候,对D...

18660
来自专栏跟我一起学Docker

第九章 Kubernetes一撇

https://www.aliyun.com/solution/kubernetes/index

11740

扫码关注云+社区

领取腾讯云代金券