「Docker 1.10.0 版本」猴年震撼發布!

jopen 9年前發布 | 16K 次閱讀 Docker

Docker 粉們,是否還記得上一個 Docker 大版本的發布是什么時候?你的記憶是否已經模糊?

答案是: 10 月 14 號

在中國春節即將到來之際,Docker 官方發布了跨時代的 Docker 1.10.0 版本,著實為猴年的到來獻上了一份大禮。

如果說 Docker 1.9.0 的 overlay 網絡意味著 Docker 在集群能力方面的質的飛躍,那么這次發布的 Docker 1.10.0 更是在多個方面實現重大突破。

總體而言,我認為這次新發布的 Docker 1.10.0 主要有以下這幾方面意義非凡的變化和看點:

  1. Docker Engine 支持配置熱更新,容器與 Docker Daemon 的耦合性大大降低
  2. Docker API 的完善程度穩步上升,容器隔離維度更細致、更全面
  3. Docker 安全劃時代地支持了 User Namespace 與 seccomp,安全程度直逼虛擬機
  4. 鏡像格式首推「內容尋址方式」,可以做到 Docker 鏡像的全球唯一性,鏡像的安全與存儲都有大的改觀
  5. 網絡能力,無論單機,還是跨主機,功能逐漸完善,成熟度穩步提升,發展之迅速不得不令人佩服
  6. 稍顯惋惜的是,傳統的容器管理工具 LXC 即將退出 Docker 的舞臺,伴隨 Docker 接近三年的時間,終于被更完善的容器管理方案取代,同時 Docker 的飛速發展以及追求卓越也一覽無余

看完 Docker 1.10.0 的主要變化,我們來看一下這一版本更為細節的變化,相信 Docker Engine、安全、Distribution、網絡、日志、存儲卷 Volume 等多方面,總有一款適合您。詳情請見下文:

1. Docker Engine(Runtime)

  • 開發了新命令  docker update ,允許用戶更新運行中容器的資源限制(對于資源的重分配意義很大,后期可以考慮集成)
  • 為  docker run 命令添加 flag 參數 --tmpfs ,用于為容器掛載一個內存文件系統,便于文件的快速讀寫
  • docker images 命令添加 flag 參數 --format
  • 允許用戶在文件中配置 Docker Daemon 的運行參數,并通過 SIGHUP 信號對其進行熱加載,換言之,Docker 開始支持動態加載配置參數
  • 更新  docker events  命令的內容輸出,使其包含更多的元數據以及事件類型;但是,需要注意的是,此改動完全兼容 Docker 的 API,但是在 Docker CLI 中仍未支持
  • 為  docker run  命令添加 flag 參數 --blkio-weight-device
  • 為  docker run  命令添加 flag 參數 --device-read-bps--device-write-bps ,用于磁盤 I/O 的讀寫 BPS
  • 為  docker run  命令添加 flag 參數 --device-read-iops--device-write-iops ,用于磁盤 I/O 的 iops
  • 為  docker run  命令添加 flag 參數 --oom-score-adj ,用于容器進程發生 oom 現象時,如何選擇 kill 進程的評分依據
  • 為命令  runattachstart  以及  exec  添加 flag 參數 --detach-keys ,以此來覆蓋從容器退出的的默認鍵盤鍵,比如使用 Docker 客戶端自定義的 ctrl+a 來作為這些命令的 ESC 鍵
  • 為  docker rundocker create  以及  docker build  命令添加 --shm-size ,用于動態內存文件系統的大小(/dev/shm 等同于 tmpfs)
  • 豐富  docker info  命令的輸出內容,為其添加運行容器的數目,停止容器的數目以及掛起容器的數目
  • 豐富  docker info  命令的輸出內容,為其添加操作系統類型以及機器結構
  • 為  docker daemon  命令添加 flag 參數 --cgroup-parent ,從而為所有容器設置父 cgroup,即掛載于制定的 cgroup 路徑下
  • 為  docker cp  命令添加 flag 參數 -L ,使得  cp  命令不是僅僅拷貝符號鏈接,而是拷貝符號鏈接真實指向的內容
  • 新增過濾規則  status=dead ,使命令  docker ps  的輸出更符合用戶需求
  • 更改  docker run  命令的返回碼(exit code),從而區分在命令返回的原因究竟是 Docker Engine 的錯誤,還是容器內部應用自身的錯誤
  • 擴展  docker events  命令中添加  --since  和  --util  參數后的內容輸出,使其支持時區以及納秒
  • 為  docker stats  命令添加 flag 參數  -a/--all ,用于顯示運行中容器以及停止容器的資源使用
  • 將默認的 cgroup-driver 設置為  cgroupfs
  • 當使用  docker build -t  命令為某一鏡像設置標簽時,Docker Daemon 觸發一個 tag 事件;換言之,Docker Daemon 新支持一種 tag 事件
  • 重新啟動 Docker Daemon 時,盡最大的努力來合理安排 link 容器的啟動順序
  • 允許  docker build  命令為鏡像設置多個標簽(tag)
  • 對任意 url 請求添加 OPTIONS 請求,而不是修改跨域存在的問題
  • 修復  docker build  命令的 flag 參數 --quiet ,使其真正意義上實現 quiet,即不輸出構建過程的內容
  • 修復命令  docker images --filter dangling=false ,現在真正意義上顯示的是所有的 non-dangling 鏡像
  • 修復命令  docker volumes ls --filter dangling=false ,現在真正意義上顯示的是所有的 non-dangling 的存儲卷
  • 修復重啟容器時因為容器內部進程長時間處理 SIGTERM 信號未果兒存在的資源競爭 BUG
  • Docker Daemon 中加入了 IBM 公司的的共享文件系統 GPFS
  • 修復 Bug,使得 volume driver 不允許被容器化
  • 刪除容器過程中,不刪除有命名的掛載點
  • 修復阻止容器啟動的某些不知名 Bug
  • 禁止在重啟過程中對容器執行  docker exec  操作
  • devicemapper 方面,當 Docker Daemon 重啟過程中 --storage-opt dm.basesize 參數的增長會導致基礎設備存儲空間的增長

2. 安全

  • 為 Docker Daemon 命令添加 flag 參數–userns-remap,用以支持 Linux Namespace 中的用戶命名空間(User Namespace),之前 Docker 對于用戶命名空間的支持僅僅存在于 Docker 試驗版
  • docker run 命令的 flag 參數 --security-opt 中,添加對自定義 seccomp 文檔的支持,主要用戶對容器應用在系統調用方面實現沙箱化
  • 為 Docker 添加默認的 seccomp 文檔,在容器的系統調用方案實現更為細粒度的隔離
  • 為  docker daemon  命令添加 flag 參數 --authorization-plugin ,用以支持自定義的訪問控制列表(ACL)
  • 當用戶使用 BTRFS 時,允許用戶在容器中運行 SELinux

3. Distribution

  • 為 AuthConfig 數據結構添加一個名為 registryToken 的屬性。該 Token 屬性允許 API 客戶端從一個鏡像倉庫中獲取用戶的認證 token,然后將 token 直接發給遠程 API
  • 對鏡像和鏡像層實現內容尋址的存儲方式。內容尋址指的是,通過鏡像層的內容來唯一的決定一個鏡像的 ID,從而保證鏡像的全局唯一性。需要注意的是:當 Docker 第一次運行的時候,會有一個對原有鏡像進行格式轉換的過程。此過程很可能會占用很長時間,主要取決于當前 Docker Daemon 所管理鏡像以及容器的數目大小。從此,鏡像中不再有  parent image  的概念,而是指向一系列的鏡像層引用。同時  docker load/docker save  的壓縮包現在會包含內容尋址鏡像的配置文件
  • 支持新的 menifest 格式(schema2)
  • 對鏡像下載和鏡像上傳做了眾多改善,比如:性能的提高,下載失敗時的重試機制,客戶端失聯的取消操作等
  • 對鏡像倉庫 v1 協議的回調限制
  • 新版的 Notary 支持,其中包含了客戶端的 pkcs11。P.S. notary 是 Docker 一款官方推出的在客戶端和服務端通過受信集合來交互的工具
  • 修復 Bug,此 Bug 在先前的版本中出現時會導致 Docker Daemon 因為等待一個并不存在的進程去下拉鏡像而僵死

4. 網絡

  • 對于容器而言,使用基于 DNS 的發現機制,取代原先的 /etc/hosts 方式
  • 對  docker network connect  命令中添加網絡方面的別名,如 --net-alias ,以及  docker run  命令時的 --alias
  • 為  docker run  以及  docker network connect  命令添加參數 --ip--ip6 ,用以在一個網絡中為容器自定義 IP
  • 為  docker network create  命令添加參數 --ipam-opt ,用于傳入自動的 IP 地址管理(IPAM)的選項
  • 在  --cluster-store-opt  參數中添加  kv.path
  • 在  --cluster-store-opt  參數中添加  discovery.heartbeat  和  discovery.ttl  參數,用于配置服務發現的 TTL 以及心跳周期
  • 為  docker network inspect  命令添加  --format  參數
  • 為  docker network connect  命令添加  --link  參數,用以提供容器級別的別名
  • 通過遠程 IP 地址管理器(IPAM)插件的形式
  • 為  docker network disconnect  命令添加  --force  參數,用以強制容器從某個 network 中斷開連接
  • 在 Linux 內核版本 3.10+ 上,使用內嵌的 overlay 驅動來完成跨主機的網絡互聯
  • 在用戶定義的 network 中,支持在  docker run  命令中使用  --link  參數
  • 擴展  docker network rm  命令,使其有能力一次刪除多個 network
  • 在  docker inspect  命令的輸出內容中添加所有容器的名稱
  • 在  docker network inspect  命令中,加入為用戶自定義網絡自動生成的子網地址
  • 為  docker network ls  命令添加 flag 參數  --filter ,用以隱藏預先定義的 networks
  • 支持已停止容器的 network 連接/斷開功能
  • 在  docker inspect  命令的返回結果中添加 network id
  • 修復 MTU 的 bug,之前版本 Docker 在有兩條或者兩條以上路由記錄時啟動就會失效
  • 為容器修復重復 IP 地址的 bug
  • 修復了有時 Docker Daemon 在創建默認網絡時存在的 bug
  • 在使用 --net=host 參數時,不為容器替換 127.0.0.1 的域名服務器地址

5. 日志

  • 新增日志驅動 Splunk
  • 在 TCP+TLS 的基礎上,完善對 Syslog 的支持
  • 擴展 docker logs --since--until 命令,用以支持納秒
  • 擴展日志驅動 awslogs ,使其當 Docker Daemon 在 AWS EC2 上運行時,可以自動監測正確的 Amazon CloudWatch 的日志時區

6. 存儲卷Volumes

  • 為 Docker 的存儲卷添加設置 mount propagation mode 的支持
  • 為存儲卷插件的 API 添加 lsinspect 接口
  • 修復了不能從命名存儲卷中拷貝數據的 bug
  • 允許外部存儲卷驅動管理異步存儲卷

7.鏡像構建器(builder)

  • .dockerignore 文件中添加對 ** 的支持,實現通配多級目錄
  • 修復 Dockerfile 中對 UTF-8 編碼字符的處理
  • 修復從標準輸入讀取內容時的權限問題

8.客戶端

  • 通過使用 DOCKER_API_VERSION 環境變量來支持API版本覆蓋的支持

9.MISC

  • systemd:在systemd服務的配置文件中,為 LimitNPROC 添加 TaskMax 參數

10.遺棄

  • 從 Docker Daemon 移除對 LXC 的支持,在 docker 1.8 版本時,Docker 用來管理容器的驅動之一——LXC 驅動就已經被標記為 deprecated,現在此驅動已經被移除
  • 在  docker daemon  命令中移除 flag 參數 --exec-driver ,因為此驅動已經不再會被使用
  • 移除部分 Docker CLI 方面的參數,比如(-rm,選擇用–rm來替代)
  • 在容器啟動的 API 中遺棄數據結構 HostConfig
  • 由于某些特定 Linux 版本發行版項目的終止,從而遺棄這些項目下 docker 軟件包的支持;比如 Fedora 21 和 Ubuntu 15.04(vivid)
  • 遺棄  docker tag  命令的  -f  參數

</div> </div>

來自: http://blog.daocloud.io/docker-1-10-0-release/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!