不用root許可權也能執行Docker——細數Docker 1.10的新功能
本文來源:Ghostcloud翻譯
Docker 1.10增加了新功能,從這個版本以後,使用者在Linux上跑Docker時都不必再以root許可權執行了。
作為容器化產品家族的最新成員,Docker 1.10解決了長期以來一直困擾Docker的一個重大問題。
到目前為止,所有容器都只能在Docker daemon下以root許可權執行,而且各種潛在的安全問題多得要命,看得人頭皮發麻。針對這一問題,Docker 1.10推出了使用者名稱空間功能。其實該功能在1.9版本中已經有了,不過那時還處在嘗試階段,到1.10版以後才正式面向廣大使用者開放這個功能,當然,1.10版在其他方面也做了改進。下面我們就來看看Docker 1.10都有哪些新亮點。
安全的名稱空間
透過名稱空間,Docker 1.10將Docker daemon和容器區別開來,對二者的許可權分別加以處理,同時為各個容器分配相應的許可權等級。在1.10下,Docker daemon仍然要取得主機的root許可權,但容器就可以不用了。
不過,使用者名稱空間功能目前還只能在Linux平臺上使用,Docker安全部門總監Nathan McCauley也承認這一點。Nathan表示將來Docker會把Windows自有的隔離機制整合到Docker中,而且Docker會實現對所有平臺隔離機制的支援。
作為對使用者名稱空間的補充,Docker還為提供了外掛機制以滿足使用者在授權方面的需求。管理員可以針對自身所在的機構制定相應規則,Docker會按照這些規則來處理機構內部使用者的訪問許可權。此外,Docker也可以依照設定好的規則來處理各個容器傳送的系統呼叫請求(包括允許呼叫、禁止呼叫和跟蹤監測三種模式)。
在之前的版本中,由於Docker只能以root許可權執行,所以執行Docker總是會遇到大量的潛在安全問題,這一問題給Docker造成了長期的困擾。對此很多人都頗有微詞,比如說CoreOS就一直在個問題上強烈抨擊Docker,而且CoreOS還推出了rkt container runtime 1.0,在該版本下,容器不必取得root許可權也可以執行。(在rkt環境下可以直接執行Docker容器。)
其實Docker早就意識到讓容器以root許可權執行會造成很多問題,為了彌補這個缺陷,Docker花費了大量的精力,研發出了名稱空間機制,並先後經歷了好幾次修改才最終推出1.10這個穩定版本。目前CoreOS旗下的rkt也可以支援該功能,不過還處在嘗試階段。
對網路功能的重構
除了名稱空間以外,Docker 1.10在另外兩個問題上也有很大的改進。其中一個是Docker Compose,Docker Compose是Docker的原生容器管理工具,透過它使用者就可以在主機上建立多個容器。在Docker 1.10中Docker Compose採用了新的定義規則,可以透過多種方式對容器之間的網路連線加以設定,而Docker的網路連線子系統也為這項功能提供了支援。在建立包含多個容器的應用時,新版的Docker Compose可以大大減少我們的工作量,令主機和容器的設定變得更為簡單。
此外,Docker的網路效能也得到了改善。1.10版本為Docker daemon設定了專門的DNS客戶端,這樣,Docker就可以自動完成容器發現功能,不用再像以前一樣靠/etc/hosts命令來執行發現功能。如有必要,使用者也可以向外部伺服器傳送DNS查詢請求。
同時,Docker 1.10還針對內網環境提供了一項新功能,使用者可以透過該功能對容器之間的網路通訊加以限定,只需輸入一行命令,即可將所有容器的通訊範圍都限定在使用者私有的子網域內。
Docker 1.10還引入了第三方解決方案,一舉搞定了另外一個長期存在的問題——網路連線問題。Docker對這次的改進非常看好,還放出豪言稱新版的網路拓撲功能無需經過任何改動即可用來開發基於Docker的應用,還可以直接部署在產品環境中。在以前,Docker因為一直沿用老舊的網路模型而頗受侷限,在這一點上沒少遭人詬病,隨著1.10版的推出,這種尷尬的局面也徹底終結了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31126106/viewspace-2092815/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 普通使用者許可權執行dockerDocker
- 不用安裝docker也能構建docker映象Docker
- 給非 root 使用者新增 docker 使用許可權Docker
- Docker安全:通過Docker提升許可權Docker
- 設定非root賬號不用sudo直接執行docker命令Docker
- Docker容器執行時許可權和Linux系統功能DockerLinux
- Android系統許可權和root許可權Android
- MAC 開啟root許可權Mac
- Atitit godaddy 檔案許可權 root許可權設定Go
- 為什麼空密碼能夠取得你的ROOT許可權?密碼
- docker執行golang可執行檔案最簡docker-compose fileDockerGolang
- 每日安全資訊:全部 Docker 版本都存在漏洞,允許攻擊者獲得主機 root 訪問許可權Docker訪問許可權
- mysql 管理:mysql 執行許可權(轉)MySql
- 在redhat 5.4或suse 11以sudo執行需要root使用者許可權的命令Redhat
- 【Linux】Liunx配置sudo 使oracle使用者有root許可權執行指令碼LinuxOracle指令碼
- Docker 映象倉庫為什麼要分庫分許可權?Docker
- 【Oracle】-【AWR/Stackpack】-AWR(Stackpack)執行許可權Oracle
- SYS執行SQL報錯缺少許可權SQL
- Docker命令-docker exec-在執行的容器中執行命令Docker
- Android手機獲取Root許可權Android
- Mac 開啟和關閉root許可權Mac
- Oracle的物件許可權、角色許可權、系統許可權Oracle物件
- docker 執行 MySQLDockerMySql
- Docker 執行 jarDockerJAR
- MySQL資料庫Root許可權MOF方法提權研究MySql資料庫
- Docker映象構建原理解析(不裝docker也能構建映象)Docker
- Linux檔案讀、寫、執行許可權Linux
- Android 6.0 執行時許可權詳解Android
- Grant許可權導致執行計劃失效
- 執行dbms_stats需要什麼許可權
- artisan日誌 root 許可權解決辦法
- 永久開啟user版本adb root許可權
- MYSQL 開啟root遠端登入許可權MySql
- 設定mysql遠端連線root許可權MySql
- Android應用程式獲得root許可權Android
- nfs 掛載目錄 root 許可權不夠 ?NFS
- Mac 在命令列中獲得Root許可權Mac命令列
- Android許可權管理之Android 6.0執行時許可權及解決辦法Android