Docker真的很好用,PHP开发者都应该学起来

attachments-2020-06-iE3BmvYe5ef6a05ce1e1e.png

对开发者而言,天天会催生出的各式各样的新技术都须要尝试,然而开发者却不太可能为他们一一搭建好环境并进行测试。时间很是宝贵,正是得益于 Docker,让咱们有可能在一条或者几条命令内就搭建完环境。Docker 有一个傻瓜化的获取软件的方法,Docker 后台会自动得到环境镜像而且运行环境。前端

并不只仅是新技术环境搭建用获得 Docker。若是你想快速在你的笔记本上运行一个 MySQL 数据库,或者一个 Redis 消息队列,那么使用 Docker 即可以很是容易地作到。例如mysql

Docker 只须要一条命令即可以运行 MySQL 数据库:sql

docker run -d -p 3306:3306 tutum/mysql。

译者注:虽然使用命令也能很是快地安装 MySQL 数据库,可是当用到最新的技术或者很是复杂的技术时,使用 Docker 便会是个很是好的选择,例如 :docker

v2-0093c0d9c2c4f2bd7089d399b5536805_720w.png

进行演示数据库

如今我常常须要在周末用本身开发的成果对客户活着别人作一两个演示。搭建演示环境的过程很是麻烦。如今我发现 Docker 已经成为我演示这些工具的最合理的方式。json

对于客户来讲,我能够直接将 Docker 镜像提供给他们,而没必要去作任何环境配置的工做,工做的效果也会和在他们演示中所看到的如出一辙,同时没必要担忧他们的环境配置会致使咱们的产品没法运行。后端

避免“我机器上能够运行”(而别人的机器不能够)前后端分离

不管是企业部署 Docker 仍是本文的我的 Docker 用例,都提到了这个状况。由于环境配置不一样,不少人在开发中也会遇到这个状况,甚至开发的软件到了测试人员的机器上便不能运行。但这都不是重点。重点是,若是咱们有一个可靠的、可分发的标准开发环境,那么咱们的开发将不会像如今这么痛苦。curl

Docker 即可以解决这个问题。Docker 镜像并不会由于环境的变化而不能运行,也不会在不一样的电脑上有不一样的运行结果。能够给测试人员提交含有应用的 Docker 镜像,这样便再也不会发生“在我机器上是能够运行的”这种事情,很大程度上减轻了开发人员测试人员互相检查机器环境设置带来的时间成本。微服务

更好地利用资源

虚拟机的粒度是“虚拟出的机器”,而 Docker 的粒度则是“被限制的应用”,相比较而言 Docker 的内存占用更少,更加轻量级。

对我来讲这是 Docker 的一个优点:由于我常常在本身电脑中运行多个 Docker 应用,使用 Docker 比使用虚拟机更加简单,方便,粒度更细,也能持续地跟踪容器状态。

为微服务定制

若是你一直在关注科技新闻的话,那么你应该据说过“微服务(Microservices)”的概念。Docker 能够很好地和微服务结合起来。从概念上来讲,一个微服务即是一个提供一整套应用程序的部分功能,Docker 即可以在开发、测试和部署过程当中一直充当微服务的容器。甚至生产环境也能够在 Docker 中部署微服务。

在云服务提供商之间移植

大多数的云主机提供商已经全面支持 Docker。对于开发人员来讲,这表示你能够很方便地切换云服务提供商,固然也能够很方便地将你本地的开发环境移动到云主机上,不须要本地上配置一次运行环境、在云主机上还配置一次运行环境。全面部署 Docker (Docker here and Docker there) 做为标准运行环境能够极大地减轻应用上线时的工做量和产生 BUG。

API 端

API 是应用之间的粘合剂,一个合格开发者确定使用过别人提供的 REST API,或者本身开发过 REST API。须要指出的是,不管是客户端仍是 API 提供端,在开发以前都须要先定义一组公共的 API 接口,写成文档,而后才能进行编码。若是服务端和客户端是共同开发的话,那么服务端一般会先实现能返回固定字符串的 API 接口,在之后的开发中再慢慢去实现 API 的功能。

虽然有人会认为在这里 Docker 被滥用了,彻底能够用 sample.json 这种文件去实现虚拟 API,可是下面有个实例能够更好地解决先后端分离开发时的 API 问题。

为了更好地解释个人意思,给你们提供一个实例:JSON Server,一个用于提供 JSON 数据的 REST API。使用过这个容器的人就会知道,既然有这么好用的 Docker JSON Server,咱们没有理由不用 Docker。

译者注:

运行示例的 JSON Server,同时使用示例中提供的 JSON 文件,只需执行一条命令即可以建立一个服务端的 API 应用。
使用 curl [http://127.0.0.1:80/posts]便可获取示例文件中的 posts 段,这样在后端没有开发完 API 的时候,前端同样能够进行协同开发。

技术的创新

这点应该算不上是用例,可是我仍是来写一下。Docker 正在快速发展,工具也在不断更新,没有人能预见到将来 Docker 会是什么样子的。你在复杂的系统中 Docker 使用的越多,越是可能会发现技术上的空白和将来技术发展的方向。如今还处在 Docker 的发展期,任何你使用 Docker 建立的工具都有可能成为社区关注的热点。这是 Docker 的机会,也是成就你本身的机会。

其余

还有两个技巧能够分享给大家。在学习 Docker 的过程当中由于有了这两个的帮助,我才得意不断地提高本身。

一:Docker Hub Registry。这是 Docker 的官方镜像仓库,除了托管着 Docker 官方的镜像外,和 Github 同样,你能够在上面上传本身的镜像,也能够在上面搜寻其余有用的镜像,极大地节省本身的时间。例如 Oracle-XE-11g 镜像,全部的一切都是现成的,彻底不须要本身去下载 Oracle XE 11g 安装。这样为你和团队节约了大量的时间成本。

若是你不太肯定的话,能够去 Docker Hub 上搜有一下有没有本身用获得的镜像。大部分状况下你所须要的镜像在 Docker Hub 上都已经有人构建了。

二:多参考 IaaS 供应商的新闻,虽然咱们不能像在他们会议室里那样彻底了解他们的公司动态,可是仍然能够重新闻中能够了解到Docker 最新的发展方向和技术趋势。能够确定的是,容器化技术是将来的热点,咱们不只能够在本机运行 Docker,不只仅在一家云服务提供商的主机上运行 Docker,将来全部的云服务提供商都会支持 Docker。

Docker 前景很明确,采用 Docker 只会让开发变得更方便。

attachments-2020-06-SgD3hngc5ef6997585c89.jpg

相关文章
相关标签/搜索