对Docker的一点理解

Docker是什么?

Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,能够把货物规整的摆放起来。而且各类各样的货物被集装箱标准化了,集装箱和集装箱之间不会相互影响。那么就不须要专门运送水果的船,也不须要专门运送化学品的船。只要这些货物在集装箱里封装的好好的,那么就能够一艘大船把他们都运走。php

Docker就是相似的理念。如今都流行云计算了,云计算就比如大货轮。docker就是集装箱。mysql

1.不一样的应用程序可能会有不一样的应用环境,好比.net开发的网站和php开发的网站依赖的软件就不同,若是把他们依赖的软件都安装在一个服务器上就要调试好久,并且很麻烦,还会形成一些冲突。好比IIS和Apache访问端口冲突。这个时候就要隔离.net开发的网站和php开发的网站。常规来说咱们能够在服务器上建立不一样的虚拟机,在不一样的虚拟机上放置不一样的应用,可是虚拟机开销比较高。Docker能够是写虚拟机隔离应用环境的功能,而且开销比虚拟机小,小就意味着省钱了。sql

2.开发软件的时候用的是Ubuntu,可是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候会遇到一些问题,好比有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程当中就得想办法解决这样的问题。这时候Docker就能够把开发环境直接封装转移给运维,运维直接部署给他的docker就能够的,并且部署速度极快。docker

3.在服务器负载方面,若是单独开一个虚拟机,那虚拟机就会占用空闲内存,docker部署的话,这些内存就会利用起来。数据库

 

 

开发者可使用Docker作什么?

 Docker并不在意你的应用程序是什么,作什么,Docker提供了一组应用打包、传输和部署的方法,以便能更好的在容器内运行任何应用。centos

1.尝试新软件服务器

对开发者而言,天天会催生出的各式各样的新技术都须要尝试,然而开发者却不太可能为他们一一搭建好环境并进行测试。时间很是宝贵,正是得益于 Docker,让咱们有可能在一条或者几条命令内就搭建完环境。Docker 有一个傻瓜化的获取软件的方法,Docker 后台会自动得到环境镜像而且运行环境。
并不只仅是新技术环境搭建用获得 Docker。若是你想快速在你的笔记本上运行一个 MySQL 数据库,或者一个 Redis 消息队列,那么使用 Docker 即可以很是容易地作到。例如 Docker 只须要一条命令即可以运行 MySQL 数据库:docker
 run -d -p 3306:3306 tutum/mysql。
译者注:虽然使用命令也能很是快地安装 MySQL 数据库,可是当用到最新的技术或者很是复杂的技术时,使用 Docker 便会是个很是好的选择,例如 Gitlab,普通用户大概须要一天的时间去搭建 Gitlab 平台,而 Docker 则只须要一条命令

运维

2.进行演示微服务

 如今我常常须要在周末用本身开发的成果对客户活着别人作一两个演示。搭建演示环境的过程很是麻烦。如今我发现 Docker 已经成为我演示这些工具的最合理的方式。同时,对于客户来讲,我能够直接将 Docker 镜像提供给他们,而没必要去作任何环境配置的工做,工做的效果也会和在他们演示中所看到的如出一辙,同时没必要担忧他们的环境配置会致使咱们的产品没法运行。


工具

3.避免“我机器上能够运行”

不管是上一篇介绍的企业部署 Docker 仍是本文的我的 Docker 用例,都提到了这个状况。由于环境配置不一样,不少人在开发中也会遇到这个状况,甚至开发的软件到了测试人员的机器上便不能运行。但这都不是重点。重点是,若是咱们有一个可靠的、可分发的标准开发环境,那么咱们的开发将不会像如今这么痛苦。Docker 即可以解决这个问题。Docker 镜像并不会由于环境的变化而不能运行,也不会在不一样的电脑上有不一样的运行结果。能够给测试人员提交含有应用的 Docker 镜像,这样便再也不会发生“在我机器上是能够运行的”这种事情,很大程度上减轻了开发人员测试人员互相检查机器环境设置带来的时间成本。
另外一个 Docker 能够发挥用处的地方是培训班。除了 Docker 容器的隔离性以外,更能体会到 Docker 优点的地方在于环境搭建。培训班的新手每一个人都要在环境搭建上花费不少时间,可是若是在这里应用到 Docker 的话,那么咱们只须要把标准的运行环境镜像分发下去,而后就能够开始上课了。使用 Docker 和使用虚拟机同样简单,可是 Docker 要更方便、更轻量级。同时,咱们也能够告诉学员:“在培训的同时,咱们还将学到当下最流行的技术——Docker”,这种共赢的结局,何乐而不为呢。

4.学习 Linux 脚本

固然这个缘由看起来可能很奇怪,可是对不不熟悉 Linux 操做系统和 Shell 脚本的人来讲,确实是一个好机会。即使本文并非在讲 Linux,Linux 的重要度仍然不言而喻。若是你用的是 Windows,那么我给你一个建议:从云主机提供商那儿租用一台云主机:我推荐使用 CoreOS 系统的云主机。虽然这样并不会让你成为专业的 Linux 运维,可是可让你快速地学到 Linux 基础知识,爱上命令行操做,而且慢慢开始熟悉和欣赏 Linux

5.更好地利用资源
虚拟机的粒度是“虚拟出的机器”,而 Docker 的粒度则是“被限制的应用”,相比较而言 Docker 的内存占用更少,更加轻量级。
对我来讲这是 Docker 的一个优点:由于我常常在本身电脑中运行多个 Docker 应用,使用 Docker 比使用虚拟机更加简单,方便,粒度更细,也能持续地跟踪容器状态。

6.为微服务定制

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

7.在云服务提供商之间移植

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

8.API 端

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

9.其余
还有两个技巧能够分享给大家。在学习 Docker 的过程当中由于有了这两个的帮助,我才得意不断地提高本身。
一:Docker Hub Registry。这是 Docker 的官方镜像仓库,除了托管着 Docker 官方的镜像外,和 Github 同样,你能够在上面上传本身的镜像,也能够在上面搜寻其余有用的镜像,极大地节省本身的时间。例如 Oracle-XE-11g 镜像,全部的一切都是现成的,彻底不须要本身去下载 Oracle XE 11g 安装。这样为你和团队节约了大量的时间成本。
若是你不太肯定的话,能够去 Docker Hub 上搜有一下有没有本身用获得的镜像。大部分状况下你所须要的镜像在 Docker Hub 上都已经有人构建了。
二:多参考 IaaS 供应商的新闻,虽然咱们不能像在他们会议室里那样彻底了解他们的公司动态,可是仍然能够重新闻中能够了解到 Docker 最新的发展方向和技术趋势。能够确定的是,容器化技术是将来的热点,咱们不只能够在本机运行 Docker,不只仅在一家云服务提供商的主机上运行 Docker,将来全部的云服务提供商都会支持 Docker。
Docker 前景很明确,采用 Docker 只会让开发变得更方便。


摘自:https://blog.csdn.net/qq_37788081/article/details/79044119,感谢做者,让我一会儿就理解了Docker是什么,Docker能作什么

相关文章
相关标签/搜索