Docker并不抽象,但是描述起來很抽象。
首先
暫且不說它的底層是如何實現的。只需要知道它比虛擬機先進:
- 快速交付和部署
- 高效虛擬化,更高的性能和效率
- 方便遷徙和擴展
- 更簡單的管理
這里有個表,或許可以幫你:
特性 | 容器 | 虛擬機 |
---|---|---|
啟動 | 秒級 | 分鐘級 |
硬盤使用 | 一般為MB | 一般為GB |
性能 | 接近原生 | 弱于 |
系統支持量 | 單機支持上千個容器 | 一般幾十個 |
其次
了解幾個概念就差不多算入門了:
- 倉庫(Repository)
- 鏡像(Image)
- 容器(Container)
倉庫
倉庫是Image的來源。互聯網上有很多倉庫,有國內的、也有國外的,這里我主要說說正統的——Docker Hub,也是默認的,使用的時候或許需要翻個小墻。
在你做好一切準備工作后,只需要docker pull <Image_name>
,就可以從Docker Hub上獲取你想要的Image。當然準備工作需要一頓操作,這里不提,可以稍后看看我的另一篇文章。
鏡像和容器
我打算把這兩個概念放一塊描述。如果把鏡像當成一個類的話,容器更像是它new出來的一個又一個對象。鏡像可以從倉庫中獲取,容器則是從鏡像中生成。
容器的啟動和暫停操作有:docker run <Image>
、docker start <Image>
、docker restart <Image>
、docker stop <Image>
。
再次
讓我闡述一下我對docker容器本質的理解。
Docker引擎之上可以運行很多鏡像從而形成一個的容器,鏡像包括操作系統、安裝的軟件,但形成的容器本質上還是基于linux內核的。于是,你可以通過連接容器(docker attach <container>
)運行shell指令。
好吧,我用一個例子說明。你打算安裝一個包含nodejs環境的docker容器,你可以從docker hub上獲取操作系統(docker pull <Image>
),比如Ubuntu、CentOS等等,然后創建一個容器(docker run <Image>
),在連接到你的容器,也就是操作系統里,就可以進行安裝nodejs的操作了,安裝好nodejs后,你可以通過掛載途徑把你的nodejs項目放入docker容器里,運行shell指令讓項目運行起來,測試無誤后,可以通過遷徙的方法把它部署到其它支持docker環境上。
上面的一系列的操作都可以寫進一個Dockerfile的文本里,生成一個屬于你自己的Image,分享給其他人,別人下載到本機上,可以通過docker build -t <image_name> .
指令構建改docker鏡像到本機上。
最后
不知道你四不四弄清楚或者更了解docker了。如果沒,推薦一本書給你;如果弄清楚了,分享我自己收集的一份docker指令集給你,有點粗略,因為還沒有整理好。