Docker容器簡要說明

Docker中安裝鏡像常用的兩種方式

  • 第一種:Dockerfile構建新的鏡像,如下面的Centos6安裝。

  • 第二種:通過拉取事先做好的鏡像,如下面redis的安裝。

Docker中的核心概念

  1. 鏡像image 簡單說鏡像就是一個只讀文件模板。也可以簡單理解爲鏡像是VMware虛擬機的一個快照,只是比這個快照更加輕量。
  2. 容器container 容器是運行着的鏡像。
  3. 數據卷volume 數據持久化技術。缺點:如果數據卷內容非常多將會導致容易加載啓動變慢。改善方法 在寫業務時,把數據庫拆成很多小的數據庫,這樣會快一些。但從根本上不建議使用數據卷做持久化。
  4. 倉庫repository Docker有一個類似版本管理倉庫(Repositry)的東西,有docker.io提供的官方倉庫(index.docker.io,相當於github),也可以自建(叫docker-registry,相當於自己搭建一個小型github)類似Maven的中央倉庫和本地倉庫。

鏡像image和容器container的區別

這裏寫圖片描述
Container和Image 在Docker的世界裏,Image是指一個只讀的層(Layer),這裏的層AUFS文件系統裏的概念。AUFS的文件系統可以讓你一層一層的疊加修改的文件。鏡像是隻讀的不可改變的,在本地會共用,主要是通過簽名來實現。誰需要改變,ok 我給你一個可寫的層,形成容器。而容器就是每運行一個鏡像就在這個鏡像上加一個可寫層。但這一層並不會改變鏡像本身。即我們能夠實現用同一個鏡像啓動多個容器 裏面的內容不會變。容器擁有唯一ID和唯一供人閱讀的名字。對外暴露Docker的特定端口。如果你要將可寫層持久化,只要通過commit命令來把這個可寫層寫到磁盤上,即生成新的只讀鏡像。

Docker爲啥可以秒及甚至毫秒級啓動

因爲Docker小。Docker中的鏡像就是一堆文件,並不像VMware一樣是一個完成的操作系統。鏡像可以簡單到只有個程序文件。ubuntu等基礎鏡像,就是把依賴的文件放到正確的地方,從而使得絕大部分程序可以正常運行。和VM的鏡像是完全不同的概念。

Docker的共用內核引發的安全性思考。

首先要從根本上理解什麼是Docker容器,Docker所使用的技術都不是新技術,主要就是把以前需要複雜操作的命令結合了起來。而從形態上來看,容器就是 一個進程,只不過是受限制的進程,CGroup限制進程的資源使用,Namespace將資源限定在一個空間,相互間不能訪問,分層文件系統就是容器的具體文件。因此,容器如果不加處理,是肯定可以操作內核的,而且是各容器間共用內核,所以這個也是某些人質疑 Docker安全性的原因。容器是肯定,也必須能夠訪問內核的,而方式就是我們所說的系統調用。任何linux進程操作,基本都會發起系統調用,只是你的調用會受到權限的控制。默認情況,容器是以非privilege方式運行的,因此很多設備和操作是不允許的。在1.10之後,Docker已經增強了安全性,seccomp可以限定什麼系統調用不能調用,user namespce可以做用戶權限映射。
發佈了25 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章