docker發展歷程


docker發展歷程

docker本身不是容器,它只是一個更加易用的前端管理器。

最早期的容器技術概念是用chroot來實現隔離,但是chroot只是提供了對進程文件目錄虛擬化的功能,不能防止進程惡意訪問系統。

直到2008年 LXC(Linux Containers"牛奶牌牛奶"),一套完整的Linux容器管理實現方案,也有如別的方案如:OpenVZ等...

docker發展歷程

lxc --> libcontainer --> runC

docker在起步階段使用lxc,但發現其並不是那么好用,於是docker公司就自己把cgroups和lxc做了一個聯合封裝。lxc向上提供的接口做了二次封裝,使其變成更易用的容器管理界面和容器管理邏輯。從而使得整個容器的使用變得更加簡便了。

容器的核心組件:

  • NameSpaces :名稱空間

僅能做到隔離,而不能做到資源分配的問題。PID,user,hostname,network都屬於內核的,所以需要隔離開來。

rootfs: 根文件系統(mount)

PID

user

hostname /proc/system/hostname

network

ipc : 進程間通信(Inter-Process Communication)

  • Control Groups: 控制組

他能夠實現以進程為單位,來嘗試着把我們的CPU的時間分配,用量分配,內存空間分配,IO用量分配以指定比例或指定數量的方式分派給多個進程。

  • Chroot : 為了安全的目的等如Selinux



docker的重要概念

  • images : read only
  • containers : A container is a runable instance of an image. You can create,run,stop,move,or delete a container using the Docker API or CLI.
  • networks
  • volumes

    后面會有對應的博客介紹其原理

docker 組件

物理: http協議進行通信
	Client 
	daemon
	registry
邏輯:
	Containers
	Images
	Registry


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM