精通docker(1)什么是docker?快速入门

今年开始,我准备做一些IT课程。目标就是想让同学们快速的学会一门技术用到工作中。

今天写一篇,大家看怎么样。

什么是docker?

docker称为容器,为什么需要这个东西呢?

举例说,你写了一个服务器程序名为A,同事也写了一个程序名为B,两个程序部署在同一个机器上,但A和B都要监听8000端口,我们知道,端口是独占的不能同时使用,这样就出现了矛盾。docker的出现就是为了解决这个问题,它将两个程序分别运行在容器中,如下图:

精通docker(1)什么是docker?快速入门

我们看这个图,从外观上看,两个程序放在两个盒子里面,这让我们联想到一个词就是”沙盒“,早期做病毒分析的时候,就会把一个病毒放在沙盒中进行隔离,以免影响宿主。

对于盒子,我们有时还称为一个轻量级的隔离的系统,为什么这样说呢?由于这个容器里面还有文件系统,如下所示:

精通docker(1)什么是docker?快速入门

表面一看,有/bin,/usr等,弄的像真的一样,看到熟悉的linux目录,还真以为这是一个linux系统呢?但是我们想一想,它怎么可能是一个系统呢?

我们用反证法推导一下:如果它真是一个完整系统的话,至少也有几百MB。而且它的启动速度和关闭速度肯定也不会很快,几乎都要和vmware这样的虚拟机差不多了,那么它的轻量从何谈起呢?因此,我们反证这个肯定不是一个完整的linux系统,只是看起来像是。

那么它是怎么回事的呢?如下图所示:

精通docker(1)什么是docker?快速入门

A和B容器都是构建在内核之上的,通俗说就是,真正做事的还是最底层的内核,A和B共享这一个内核,减去这部分之后A和B的体积就大大减小。而且A和B只是一个普普通通的程序,它和hello world这样的进程差不多,只不过容器营造的是一个系统假象,让A和B以为自己独占了一个系统。

总结:docker的容器A和B,是一个普通的进程。它们共享底层的内核 。

容器进程

进程有唯一的进程ID,因此容器A和B都有自己的进程ID。

总结

docker容器是一个普通的进程,它们没有内核,只是内部挂载文件系统(有的没有),看起来像是一个完整的linux系统,实际底层用的是宿主的内核。

容器和hello world一样,是一个普通的进程,因此具有进程ID。下一篇介绍它的安装和模型。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容