「Docker 1.10.0 版本」猴年震撼發布!
Docker 粉們,是否還記得上一個 Docker 大版本的發布是什么時候?你的記憶是否已經模糊?
答案是: 10 月 14 號
在中國春節即將到來之際,Docker 官方發布了跨時代的 Docker 1.10.0 版本,著實為猴年的到來獻上了一份大禮。
如果說 Docker 1.9.0 的 overlay 網絡意味著 Docker 在集群能力方面的質的飛躍,那么這次發布的 Docker 1.10.0 更是在多個方面實現重大突破。
總體而言,我認為這次新發布的 Docker 1.10.0 主要有以下這幾方面意義非凡的變化和看點:
- Docker Engine 支持配置熱更新,容器與 Docker Daemon 的耦合性大大降低
- Docker API 的完善程度穩步上升,容器隔離維度更細致、更全面
- Docker 安全劃時代地支持了 User Namespace 與 seccomp,安全程度直逼虛擬機
- 鏡像格式首推「內容尋址方式」,可以做到 Docker 鏡像的全球唯一性,鏡像的安全與存儲都有大的改觀
- 網絡能力,無論單機,還是跨主機,功能逐漸完善,成熟度穩步提升,發展之迅速不得不令人佩服
- 稍顯惋惜的是,傳統的容器管理工具 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 進程的評分依據 - 為命令
run
、attach
、start
以及exec
添加 flag 參數--detach-keys
,以此來覆蓋從容器退出的的默認鍵盤鍵,比如使用 Docker 客戶端自定義的 ctrl+a 來作為這些命令的 ESC 鍵 - 為
docker run
、docker 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 添加
ls
和inspect
接口 - 修復了不能從命名存儲卷中拷貝數據的 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!