只有光头才能变强。git
文本已收录至个人GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y程序员
估计你们也可能听过Docker这项技术(在论坛上、招聘技能上、群上等等),要是不了解Docker,都很差意思在网上冲浪的时候吹牛逼了。github
因此这几天学了一下Docker,总结了Docker入门的相关知识,分享给你们(好让咱们一块儿吹牛逼)。web
I need a doctor,call me a doctor. I need a doctor, doctor, to bring me back to life .docker
官方介绍(中文版):http://www.docker-cn.com/what-docker#/developers编程
Docker 是世界领先的软件容器平台。 开发人员利用 Docker 能够消除协做编码时“在个人机器上可正常工做”的问题。 运维人员利用 Docker 能够在隔离容器中并行运行和管理应用,得到更好的计算密度。 企业利用 Docker 能够构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为 Linux 和 Windows Server 应用发布新功能。windows
通常咱们写程序的,能接触到好几个环境:安全
其实咱们在学习编程中,不少时间都浪费在“环境”上:服务器
war/jar
包,我得去安装一下JDK、Tomcat、MySQL等配置各类的环境变量才能跑起来。因此就有个笑话《千万不要跟程序员说,你的代码有bug》:网络
好比我写了两个应用(网站),这两个应用部署在同一台服务器上,那可能会出现什么问题?
PHP
,一个.NET
。这两个应用各类的依赖软件都安装在同一个服务器上,可能就会形成各类冲突/没法兼容,这可能调试就很是麻烦了。不知道你们有没有装过系统,好比说装Linux虚拟机,重装Windows系统,都是须要镜像的。
有了这个镜像,咱们就能够运行这个镜像,来进行安装系统的操做(此处省略N个下一步),因而咱们的系统就装好了。通常来讲,咱们去官方渠道下载的镜像,都是纯净的。好比去官方下载Windows镜像,装完后以后桌面只有一个回收站。
但有过了解装系统的同窗可能就会知道,有的镜像装完可能还有360这些软件,但系统的的确确是变了。简单来讲,就是这些镜像添加了其余的东西(好比360软件、腾讯、千千静听等等软件)。
Docker也是这种思路,能够将咱们的想要的环境构建(打包)成一个镜像,而后咱们能够推送(发布)到网上去。想要用这个环 境的时候,在网上拉取一份就行了。
有了Docker,咱们在搭环境的时候,跟之前的方式就不同了。
将Docker的镜像运行起来就是一两秒的事情而已,十分方便的。
说到这里,就得提出一个你们可能不认识的概念:LXC(Linux Containers)--->Linux容器。
在Linux内核中,提供了cgroups功能,来达成资源的区隔化。它同时也提供了名称空间(namespace)区隔化的功能,使应用程序看到的操做系统环境被区隔成独立区间,包括进程树,网络,用户id,以及挂载的文件系统。
简单来讲就是:LXC是一个为Linux内核包含特征的用户接口。经过强大的API和简单的工具,它可让Linux用户轻松的建立和托管系统或者应用程序容器。
咱们在翻看Docker的官方文档的时候,也很容易看见cgroup和namespace这两个名词:
来源维基百科:
Early versions of Docker used LXC as the container execution driver, though LXC was made optional in v0.9 and support was dropped in Docker v1.10.
lxc是早期版本docker的一个基础组件,docker 主要用到了它对 Cgroup 和 Namespace 两个内核特性的控制。新的Docker版本已经移除了对LXC的support。
上面说了,Docker底层用的Linux的cgroup和namespace这两项技术来实现应用隔离,那Windows和Mac用户能用Docker吗?
Docker Toolbox
,它须要Oracle Virtual Box
来跑DockerDocker for Windows requires 64bit Windows 10 Pro and Microsoft Hyper-V
参考资料:
说到应用隔离和镜像,我就想起了虚拟机。今年下半年(此处省略.....),文体两开花(此处省略.....),要是我写文章写得很差,我是须要向XX谢罪的。
估计你们都用过虚拟机,虚拟机也能实现对应用的隔离,安装特定的镜像也能跑出咱们想要的环境。虚拟机已经发展了好久了,为何咱们还须要Docker呢?
这部份内容在官网也有相关的介绍:
一句话总结:Docker容器比虚拟机轻量多了!
Docker能够干吗?
其实这篇文章主要是讲为何咱们须要Docker(在学习一项技术以前,必需要知道这项技术是用来干吗的),Docker的一些概念和命令我还没介绍(留到下一篇啦)。若是还没看过【生活现场】从搬家到容器技术docker应用场景解析,能够先去看看~
我在学习Docker的时候也找到了很多的资源,想要获取Docker入门资源的同窗可在公众号下回复“Docker”
乐于分享和输出干货的Java技术公众号:Java3y。关注便可领取海量的视频资源!
以为个人文章写得不错,不妨点一下赞!