Docker Engine 先前版本
1.13.1 (2017-02-08)
重要在以
devicemapper作為預設儲存驅動程式的 Linux 發行版上,現在預設使用overlay2或overlay(如果核心支援)。若要使用 devicemapper,您可以透過--storage-driver常駐程式選項,或在daemon.json設定檔中設定 "storage-driver",手動配置要使用的儲存驅動程式。
重要在 Docker 1.13 中,受管插件 API 相比 Docker 1.12 中引入的實驗版本有所變更。您必須在升級至 Docker 1.13 之前,解除安裝使用 Docker 1.12 安裝的插件。您可以使用
docker plugin rm指令解除安裝插件。
如果您在未解除安裝先前插件的情況下已升級至 Docker 1.13,Docker 常駐程式啟動時可能會看到此訊息
Error starting daemon: json: cannot unmarshal string into Go value of type types.PluginEnv
若要手動移除所有插件並解決此問題,請採取以下步驟
- 從以下路徑移除 plugins.json:
/var/lib/docker/plugins/。 - 重新啟動 Docker。驗證 Docker 常駐程式啟動時沒有錯誤。
- 重新安裝您的插件。
貢獻
遠端 API (v1.26) 與用戶端
- 支援在 docker stack deploy 中使用 compose 檔案的 secrets #30144
執行時期
- 修復
docker system df中的大小問題 #30378 - 修復 Swarm 憑證過期時
docker inspect的錯誤。 #29246 - 修復 v1 插件啟用錯誤時的死結 #30408
- 修復 SELinux 回歸 #30649
插件
- 支援 Swarm 模式下的全域範圍網路插件 (v2) #30332
- 新增
docker plugin upgrade#29414
Windows
1.13.0 (2017-01-18)
重要在以
devicemapper作為預設儲存驅動程式的 Linux 發行版上,現在預設使用overlay2或overlay(如果核心支援)。若要使用 devicemapper,您可以透過--storage-driver常駐程式選項,或在daemon.json設定檔中設定 "storage-driver",手動配置要使用的儲存驅動程式。
重要在 Docker 1.13 中,受管插件 API 相比 Docker 1.12 中引入的實驗版本有所變更。您必須在升級至 Docker 1.13 之前,解除安裝使用 Docker 1.12 安裝的插件。您可以使用
docker plugin rm指令解除安裝插件。
如果您在未解除安裝先前插件的情況下已升級至 Docker 1.13,Docker 常駐程式啟動時可能會看到此訊息
Error starting daemon: json: cannot unmarshal string into Go value of type types.PluginEnv
若要手動移除所有插件並解決此問題,請採取以下步驟
- 從以下路徑移除 plugins.json:
/var/lib/docker/plugins/。 - 重新啟動 Docker。驗證 Docker 常駐程式啟動時沒有錯誤。
- 重新安裝您的插件。
建置器
- 修復跳脫字元後有空行的 Dockerfile 解析器 #24725
- 在
docker build上新增步驟編號 #24978
- 現在允許使用未使用的 build-args。將顯示警告而非錯誤和建置失敗 #27412
- 修復 Windows 上的建置器快取問題 #27805
貢獻
- 新增對 PPC64LE 上 Ubuntu 16.04 Xenial 的 docker debs 建置支援 #23438
- 新增對 s390x 上 Ubuntu 16.04 Xenial 的 docker debs 建置支援 #26104
- 新增對 PPC64LE 上 Ubuntu 16.10 Yakkety Yak 的 docker debs 建置支援 #28046
- 新增 VMWare Photon OS 的 RPM 建置器 #24116
- 新增 shell 完成檔至 tgz #27735
- 更新安裝指令碼以允許使用中國的鏡像站 #27005
- 新增 Ubuntu 16.10 Yakkety Yak 的 DEB 建置器 #27993
- 新增 Fedora 25 的 RPM 建置器 #28222
- 新增對 aarch64 的
make deb支援 #27625
發布
- 更新 notary 相依性至 0.4.2(完整變更紀錄此處)#27074
- 對 Windows 上的編譯提供支援 docker/notary#970
- 改善用戶端認證錯誤的錯誤訊息 docker/notary#972
- 支援尋找
~/.docker/trust/private目錄中任何位置的金鑰,而不僅限於~/.docker/trust/private/root_keys或~/.docker/trust/private/tuf_keys下 docker/notary#981 - 先前,在任何更新錯誤時,用戶端會回退到快取。現在,只有在發生網路錯誤、伺服器不可用或缺少 TUF 資料時才會這樣做。無效的 TUF 資料會導致更新失敗 - 例如發生無效的根輪換時。docker/notary#982
- 改善根驗證和 yubikey 除錯日誌紀錄 docker/notary#858 docker/notary#891
- 如果根或授權的憑證即將過期,則發出警告 docker/notary#802
- 如果角色元資料即將過期,則發出警告 docker/notary#786
- 修復密語檢索嘗試計數和終端機偵測 docker/notary#906
- 避免在不同使用者將相同的層推送到已認證的登錄檔時進行不必要的 blob 上傳 #26564
- 允許為登錄檔憑證使用外部儲存 #26354
日誌記錄
- 標準化所有日誌驅動程式中的預設日誌標籤值 #22911
- 改善長日誌行記錄時的效能和記憶體使用 #22982
- 啟用 Windows 的 syslog 驅動程式 #25736
- 新增 Logentries 驅動程式 #27471
- 更新 AWS 日誌驅動程式以支援標籤 #27707
- fluentd 的 Unix socket 支援 #26088
- 在 Windows 上啟用 fluentd 日誌驅動程式 #28189
- 當用作 journald 欄位名稱時,對 docker 標籤進行清理 #23725
- 修復
docker logs --tail返回行數少於預期的問題 #28203 - Splunk 日誌驅動程式:效能和可靠性改進 #26207
- Splunk 日誌驅動程式:可配置的格式和跳過連線驗證 #25786
網路
- 新增
--attachable網路支援,以啟用docker run在 swarm 模式 overlay 網路中運作 #25962 - 為使用
docker service create中--publish選項的服務,新增對主機連接埠 PublishMode 的支援 #27917 和 #28943 - 新增對 Windows Server 2016 overlay 網路驅動程式的支援(需要即將推出的 WS2016 更新)#28182
- 將預設的
FORWARD原則變更為DROP#28257
- 新增對在 Windows 上為預先定義網路指定靜態 IP 位址的支援 #22208
- 修復
docker run上的--publish旗標在 IPv6 位址下無法運作的問題 #27860 - 修復 inspect 網路顯示帶有遮罩的閘道的問題 #25564
- 修復橋接器中多個位址可能導致
--fixed-cidr沒有正確位址的問題 #26659
- 為
docker network inspect新增建立時間戳記 #26130
插件
- 新增對動態重新載入授權插件的支援 #22770
- 在
docker plugin ls中新增描述 #25556 - 為
docker plugin inspect新增-f/--format#25990 - 新增
docker plugin create指令 #28164
- 將請求的 TLS 對等憑證傳送給授權插件 #27383
- 支援 swarm 模式下的全域範圍網路和 ipam 插件 #27287
- 將
docker plugin install分割為兩個 API 呼叫/privileges和/pull#28963
遠端 API (v1.25) 與用戶端
- 從
docker volume create移除--name#23830
- 新增
docker stack ls#23886 - 新增一個
is-taskps 篩選器 #24411 - 為
docker service create新增--env-file旗標 #24844 - 為
docker stats新增--format#24987 - 使
docker node ps在 swarm 節點中預設為self#25214 - 為
docker service create新增--group#25317 - 為服務/節點/堆疊 ps 輸出新增
--no-trunc#25337 - 將 Logs 新增至
ContainerAttachOptions,以便 go 用戶端可以在 attach 過程中請求檢索容器日誌 #26718 - 允許用戶端與舊版伺服器通訊 #27745
- 在用戶端通知使用者正在進行容器移除 #26074
- 不允許在服務端點中同時請求一種以上的模式 #26643
- 允許頂層
docker inspect指令檢查任何類型的資源 #23614
- 新增 --cpus 旗標以控制
docker run和docker create的 CPU 資源,並將NanoCPUs新增至HostConfig#27958
- 允許在
docker run或docker create中取消設定--entrypoint#23718
- 透過新增
docker image和docker container指令來重構 CLI 指令,以提高一致性 #26025
- 從
service ls輸出中移除COMMAND欄位 #28029
- 為
docker events新增--format#26268
- 為
docker run新增--dns-option#28186 - 將映像檔 ID 新增至容器提交事件 #28128
- 將外部二進位檔案版本新增至 docker info #27955
- 在
docker info的輸出中新增Manager Addresses資訊 #28042 - 為
docker images新增一個新的參考篩選器 #27872
執行時期
- 新增
--experimental常駐程式旗標以啟用實驗性功能,而非將它們包含在單獨的建置中 #27223 - 新增
--shutdown-timeout常駐程式旗標,以指定在常駐程式退出前正常停止容器的預設超時時間(秒) #23036 - 新增
--stop-timeout以指定個別容器停止的超時值(秒) #22566 - 新增一個新的常駐程式旗標
--userland-proxy-path,以允許配置使用者空間代理,而非使用來自$PATH的硬編碼docker-proxy#26882 - 在
dockerd和docker run上新增布林旗標--init,以使用 tini(一個殭屍程序收割 init 程序)作為 PID 1 #26061 #28037 - 新增一個新的常駐程式旗標
--init-path,以允許配置docker-init二進位檔案的路徑 #26941 - 新增對即時重新載入設定中不安全登錄檔的支援 #22337
- 新增對 Windows 常駐程式上 storage-opt 大小的支援 #23391
- 透過將其從用戶端移至常駐程式,提高
docker run --rm的可靠性 #20848
- 新增對
--cpu-rt-period和--cpu-rt-runtime旗標的支援,允許在核心中啟用CONFIG_RT_GROUP_SCHED時,容器執行即時執行緒 #23430
- 修復
service tasks --filter中的部分/全部篩選器問題 #24850 - 允許 Engine 在使用者命名空間內執行 #25672
- 修復使用 devicemapper graphdriver 時,裝置延遲移除與恢復裝置之間的競爭條件 #23497
- 新增對 Windows 上
docker stats的支援 #25737 - 允許在
--userns=host時使用--pid=host和--net=host#25771
- (實驗性) 新增基礎
container、image和daemon操作的指標 (Prometheus) 輸出 #25820
- 修復
docker stats中NetworkDisabled=true的問題 #25905
- 新增對 Windows 上
docker top的支援 #25891 - 記錄已執行程序 (exec'd process) 的 PID #27470
- 新增透過
getent查詢使用者/群組的支援 #27599 - 新增新的
docker system指令,包含用於系統資源管理的df和prune子指令,以及docker {container,image,volume,network} prune子指令 #26108 #27525 / #27525
- 修復透過將 devicemapper 的 xfs max_retries 設定為 0 而導致容器無法停止或殺掉的問題(ENOSPC 時) #26212
- 修復
docker cp在 CentOS 上使用 devicemapper 時無法複製到容器磁碟區目錄的問題 #28047
- 推廣 overlay(2) graphdriver #27932
- 新增
--seccomp-profile常駐程式旗標,以指定覆蓋預設值的 seccomp 設定檔路徑 #26276
- 在
docker exec -t上新增TERM環境變數 #26461
- 在
docker kill時遵守容器的--stop-signal設定 #26464
Swarm 模式
- 在
docker service inspect --pretty的輸出中顯示端點模式 #26906 - 透過縮短任務名稱中的服務 ID,使
docker service ps的輸出更容易閱讀 #28088 - 使
docker node ps預設為目前節點 #25214
- 為服務建立新增
--dns、--dns-opt和--dns-search。 #27567 - 為
docker service update新增--force#27596 - 為
docker service create和docker service update新增--health-*和--no-healthcheck旗標 #27369 - 為
docker service ps新增-q#27654
- 在
docker service ls中顯示全域服務數量 #27710
- 從
docker service update移除--name旗標。此旗標僅在docker service create上有效,因此已從update指令中移除 #26988 - 修復工作節點因短暫網路問題而無法恢復的問題 #26646
- 新增對健康感知負載平衡和 DNS 記錄的支援 #27279
- 為
docker service create新增--hostname#27857 - 為
docker service create新增--host,以及為docker service update新增--host-add、--host-rm#28031 - 為
docker service create/update新增--tty旗標 #28076
- 為
docker service update新增--update-max-failure-ratio、--update-monitor和--rollback旗標 #26421
- 修復在容器內執行
docker swarm init時位址自動探索的問題 #26457
- (實驗性) 新增
docker service logs指令以檢視服務日誌 #28089 - 按摘要 (digest) 固定
docker service create和update的映像檔 #28173
- 為
docker node rm --force和docker swarm leave --force新增短旗標 (-f) #28196
- 新增自訂 Raft 快照的選項 (
--max-snapshots,--snapshot-interval) #27997
- 如果已按摘要固定,則不要重新提取映像檔 #28265
Volume
- 在
docker volume rm中新增--force旗標,以強制清除已刪除磁碟區的資料 #23436 - 增強
docker volume inspect以顯示建立磁碟區時使用的所有選項 #26671 - 新增對本機 NFS 磁碟區解析主機名稱的支援 #27329
安全性
棄用
- 將
docker daemon指令標記為棄用。常駐程式已移至單獨的二進位檔案 (dockerd),應改用該檔案 #26834 - 棄用未版本化的 API 端點 #28208
- 移除 Ubuntu 15.10 (Wily Werewolf) 作為支援的平台。Ubuntu 15.10 已達到生命週期終點 (EOL),不再接收更新 #27042
- 移除 Fedora 22 作為支援的平台。Fedora 22 已達到 EOL,不再接收更新 #27432
- 移除 Fedora 23 作為支援的平台。Fedora 23 已達到 EOL,不再接收更新 #29455
- 棄用
docker pull上的repo:shortid語法 #27207 - 棄用 overlay 和 overlay2 儲存驅動程式中沒有
d_type的後端檔案系統 #27433 - 棄用 Dockerfile 中的
MAINTAINER#25466 - 棄用端點
/images/json的filter參數 #27872 - 棄用設定重複的 Engine 標籤 #24533
- 棄用
NetworkSettings中的「頂層」網路資訊 #28437
1.12.6 (2017-01-10)
重要Docker 1.12 附帶了適用於基於 rpm 的安裝(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)的更新版 systemd 單元檔案。從舊版本的 Docker 升級時,升級過程可能不會自動安裝更新版本的單元檔案,或者如果在以下情況下無法啟動
docker service;
- systemd 單元檔案 (
/usr/lib/systemd/system/docker.service) 包含本機變更,或- 存在 systemd drop-in 檔案,且在
ExecStart指令中包含-H fd://
啟動 docker service 將會產生錯誤
Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
或
no sockets found via socket activation: make sure the service was started by systemd.
要解決此問題
- 備份目前版本的單元檔案,並將該檔案替換為 隨 Docker 1.12 附帶的版本
- 如果存在,請從
/usr/lib/systemd/system/docker.service檔案中移除Requires=docker.socket指令 - 從
ExecStart指令中移除-H fd://(在主單元檔案和任何現有的 drop-in 檔案中皆需移除)。
進行這些變更後,執行 sudo systemctl daemon-reload 和 sudo systemctl restart docker 以重新載入變更並(重新)啟動 docker 常駐程式。
注意Docker 1.12.5 將正確驗證當您指定
--ipv6選項時,是否提供了 IPv6 子網路,或是 IPAM 驅動程式是否能提供一個。
如果您目前在使用 --ipv6 選項而沒有指定 --fixed-cidr-v6 選項,Docker 常駐程式將拒絕啟動並顯示以下訊息
Error starting daemon: Error initializing network controller: Error creating
default "bridge" network: failed to parse pool request
for address space "LocalDefault" pool " subpool ":
could not find an available, non-overlapping IPv6 address
pool among the defaults to assign to the network要解決此錯誤,請移除 --ipv6 旗標(以保留與 Docker 1.12.3 及更早版本相同的行為),或者提供一個 IPv6 子網路作為 --fixed-cidr-v6 旗標的值。
類似地,如果您在使用預設 IPAM 驅動程式建立網路時指定了 --ipv6 旗標,且未提供 IPv6 --subnet,網路建立將會失敗並顯示以下訊息
Error response from daemon: failed to parse pool request for address space
"LocalDefault" pool "" subpool "": could not find an
available, non-overlapping IPv6 address pool among
the defaults to assign to the network要解決此問題,請移除 --ipv6 旗標(以保留與 Docker 1.12.3 及更早版本相同的行為),或者提供一個 IPv6 子網路作為 --subnet 旗標的值。
如果您使用支援 IPv6 子網路自動分配的外部 IPAM 驅動程式,網路建立將會成功。
執行時期
- 修復 runC 權限提升 (CVE-2016-9962)
1.12.5 (2016-12-15)
重要Docker 1.12 附帶了適用於基於 rpm 的安裝(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)的更新版 systemd 單元檔案。從舊版本的 Docker 升級時,升級過程可能不會自動安裝更新版本的單元檔案,或者如果在以下情況下無法啟動
docker service;
- systemd 單元檔案 (
/usr/lib/systemd/system/docker.service) 包含本機變更,或- 存在 systemd drop-in 檔案,且在
ExecStart指令中包含-H fd://
啟動 docker service 將會產生錯誤
Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
或
no sockets found via socket activation: make sure the service was started by systemd.
要解決此問題
- 備份目前版本的單元檔案,並將該檔案替換為 隨 Docker 1.12 附帶的版本
- 如果存在,請從
/usr/lib/systemd/system/docker.service檔案中移除Requires=docker.socket指令 - 從
ExecStart指令中移除-H fd://(在主單元檔案和任何現有的 drop-in 檔案中皆需移除)。
進行這些變更後,執行 sudo systemctl daemon-reload 和 sudo systemctl restart docker 以重新載入變更並(重新)啟動 docker 常駐程式。
注意Docker 1.12.5 將正確驗證當您指定
--ipv6選項時,是否提供了 IPv6 子網路,或是 IPAM 驅動程式是否能提供一個。
如果您目前在使用 --ipv6 選項而沒有指定 --fixed-cidr-v6 選項,Docker 常駐程式將拒絕啟動並顯示以下訊息
Error starting daemon: Error initializing network controller: Error creating
default "bridge" network: failed to parse pool request
for address space "LocalDefault" pool " subpool ":
could not find an available, non-overlapping IPv6 address
pool among the defaults to assign to the network要解決此錯誤,請移除 --ipv6 旗標(以保留與 Docker 1.12.3 及更早版本相同的行為),或者提供一個 IPv6 子網路作為 --fixed-cidr-v6 旗標的值。
類似地,如果您在使用預設 IPAM 驅動程式建立網路時指定了 --ipv6 旗標,且未提供 IPv6 --subnet,網路建立將會失敗並顯示以下訊息
Error response from daemon: failed to parse pool request for address space
"LocalDefault" pool "" subpool "": could not find an
available, non-overlapping IPv6 address pool among
the defaults to assign to the network要解決此問題,請移除 --ipv6 旗標(以保留與 Docker 1.12.3 及更早版本相同的行為),或者提供一個 IPv6 子網路作為 --subnet 旗標的值。
如果您使用支援 IPv6 子網路自動分配的外部 IPAM 驅動程式,網路建立將會成功。
執行時期
- 修復 stdin 關閉事件傳送上的競爭情況 #29424
網路
- 修復舊版 docker 中網路以
--ipv6建立且沒有 ipv6--subnet時,docker network ls的崩潰問題 #29416
貢獻
- 修復 Darwin 上的編譯 #29370
1.12.4 (2016-12-12)
重要Docker 1.12 附帶了適用於基於 rpm 的安裝(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)的更新版 systemd 單元檔案。從舊版本的 Docker 升級時,升級過程可能不會自動安裝更新版本的單元檔案,或者如果在以下情況下無法啟動
docker service;
- systemd 單元檔案 (
/usr/lib/systemd/system/docker.service) 包含本機變更,或- 存在 systemd drop-in 檔案,且在
ExecStart指令中包含-H fd://
啟動 docker service 將會產生錯誤
Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
或
no sockets found via socket activation: make sure the service was started by systemd.
要解決此問題
- 備份目前版本的單元檔案,並將該檔案替換為 隨 Docker 1.12 附帶的版本
- 如果存在,請從
/usr/lib/systemd/system/docker.service檔案中移除Requires=docker.socket指令 - 從
ExecStart指令中移除-H fd://(在主單元檔案和任何現有的 drop-in 檔案中皆需移除)。
進行這些變更後,執行 sudo systemctl daemon-reload 和 sudo systemctl restart docker 以重新載入變更並(重新)啟動 docker 常駐程式。
執行時期
- 修復未移除磁碟區元資料的問題 #29083
- 非同步關閉串流以防止保持容器鎖定 #29050
- 修復新建立容器磁碟區的 SELinux 標籤 #29050
- 移除主機名稱驗證 #28990
- 修復 IO 競爭導致的死結 #29095 #29141
- 如果容器正在重新啟動,則返回空的統計資訊 #29150
- 修復磁碟區儲存鎖定 #29151
- 確保 API 中的狀態碼一致 #29150
- 修復 overlay2 中不正確的不透明目錄權限 #29093
- 偵測插件內容並在
docker pull時報錯 #29297
Swarm 模式
- 更新 Swarmkit #29047
- orchestrator/global:修復更新時的死結 docker/swarmkit#1760
- 在領導者切換時保留現有網路的 vxlan id docker/swarmkit#1773
- 拒絕未命名為 "default" 的 swarm spec #29152
網路
- 更新 libnetwork #29004 #29146
- 修復嵌入式 DNS 中的崩潰 docker/libnetwork#1561
- 修復在全域範圍網路傳遞 --link-local-ip 時的解組崩潰 docker/libnetwork#1564
- 修復網路插件返回 nil StaticRoutes 時的崩潰 docker/libnetwork#1563
- 修復
osl.(*networkNamespace).DeleteNeighbor中的崩潰 docker/libnetwork#1555 - 修復 swarm 網路並發對映讀/寫中的崩潰 docker/libnetwork#1570
- 允許在容器內執行 docker 時使用加密網路 docker/libnetwork#1502
- 不要阻塞 IPv6 池的自動分配 docker/libnetwork#1538
- 為 netlink 呼叫設定超時 docker/libnetwork#1557
- 將網路本機儲存超時增加至一分鐘 docker/libkv#140
- 修復
libnetwork.(*sandbox).execFunc中的崩潰 docker/libnetwork#1556 - 對內部網路遵守 icc=false docker/libnetwork#1525
日誌記錄
- 更新 syslog 日誌驅動程式 #29150
貢獻
- 在 fedora 安裝前執行 "dnf upgrade" #29150
- 將 build-date 新增回 RPM 套件 #29150
- deb 套件檔名已變更以包含發行版名稱,以便區分不同的發行版代號 #27829
1.12.3 (2016-10-26)
重要Docker 1.12 附帶了適用於基於 rpm 的安裝(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)的更新版 systemd 單元檔案。從舊版本的 Docker 升級時,升級過程可能不會自動安裝更新版本的單元檔案,或者如果在以下情況下無法啟動 Docker 服務;
- systemd 單元檔案 (
/usr/lib/systemd/system/docker.service) 包含本機變更,或- 存在 systemd drop-in 檔案,且在
ExecStart指令中包含-H fd://
啟動 docker service 將會產生錯誤
Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
或
no sockets found via socket activation: make sure the service was started by systemd.
要解決此問題
- 備份目前版本的單元檔案,並將該檔案替換為 隨 Docker 1.12 附帶的版本
- 如果存在,請從
/usr/lib/systemd/system/docker.service檔案中移除Requires=docker.socket指令 - 從
ExecStart指令中移除-H fd://(在主單元檔案和任何現有的 drop-in 檔案中皆需移除)。
進行這些變更後,執行 sudo systemctl daemon-reload 和 sudo systemctl restart docker 以重新載入變更並(重新)啟動 docker 常駐程式。
執行時期
- 修復容器中的環境能力使用 (CVE-2016-8867) #27610
- 防止 Windows 的 libcontainerd 出現死結 #27136
- 修復 CopyFileWithTar 中的錯誤報告 #27075
Swarm 模式
- 修復 restart-policy 的轉換 #27062
- 更新 Swarmkit #27554
- 避免重新啟動已重新啟動的任務 docker/swarmkit#1305
- 允許使用不同協定的重複已發佈連接埠 docker/swarmkit#1632
- 允許在服務上進行多個隨機指派的已發佈連接埠 docker/swarmkit#1657
- 修復在初始化時發生配置時的崩潰 docker/swarmkit#1651
網路
- 更新 libnetwork #27559
- 修復將沙盒序列化為字串時的競爭 docker/libnetwork#1495
- 修復刪除期間的競爭 docker/libnetwork#1503
- 在橋接驅動程式中撤銷連線時重設端點連接埠資訊 docker/libnetwork#1504
- 修復網路程式碼中的死結 docker/libnetwork#1507
- 修復負載平衡器狀態中的競爭 docker/libnetwork#1512
日誌記錄
- 更新 fluent-logger-golang 至 v1.2.1 #27474
貢獻
1.12.2 (2016-10-11)
重要Docker 1.12 附帶了適用於基於 rpm 的安裝(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)的更新版 systemd 單元檔案。從舊版本的 Docker 升級時,升級過程可能不會自動安裝更新版本的單元檔案,或者如果在以下情況下無法啟動
docker service;
- systemd 單元檔案 (
/usr/lib/systemd/system/docker.service) 包含本機變更,或- 存在 systemd drop-in 檔案,且在
ExecStart指令中包含-H fd://
啟動 docker service 將會產生錯誤
Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
或
no sockets found via socket activation: make sure the service was started by systemd.
要解決此問題
- 備份目前版本的單元檔案,並將該檔案替換為 隨 Docker 1.12 附帶的版本
- 如果存在,請從
/usr/lib/systemd/system/docker.service檔案中移除Requires=docker.socket指令 - 從
ExecStart指令中移除-H fd://(在主單元檔案和任何現有的 drop-in 檔案中皆需移除)。
進行這些變更後,執行 sudo systemctl daemon-reload 和 sudo systemctl restart docker 以重新載入變更並(重新)啟動 docker 常駐程式。
執行時期
- 修復因篩選
docker ps的競爭情況而導致的崩潰 #26049
- 實作重試邏輯以防止使用 aufs 儲存驅動程式時出現「無法移除檔案系統」錯誤 #26536
- 如果啟用
dm.use_deferred_removal,防止 devicemapper 移除裝置符號連結 #24740
- 修復當指令以無效選項執行時,CLI 未傳回正確退出碼的問題 #26777
- 修復因健康檢查中 stdout / stderr 處理錯誤而導致的崩潰 #26507
- 修復 exec 子程序的處理 #26874
- 修復 HEALTHCHECK CMD 的 exec 形式 #26208
網路
- 修復 armv5 上的常駐程式啟動崩潰 #24315
- Vendor libnetwork #26879 #26953
- 避免在代理加入失敗時提早返回 docker/libnetwork#1473
- 修復服務已發佈連接埠清理問題 docker/libetwork#1432 docker/libnetwork#1433
- 從暫時的 gossip 失敗中正確恢復 docker/libnetwork#1446
- 消除 gossip 叢集已知節點名稱的歧義,以避免節點名稱衝突 docker/libnetwork#1451
- 遵守使用者提供的 gossip 監聽位址 docker/libnetwork#1460
- 允許跨同一主機上的服務透過已發佈連接埠進行存取 docker/libnetwork#1398
- 將 ingress 沙盒名稱從隨機 ID 更改為
ingress_sboxdocker/libnetwork#1449
- 停用 ingress 網路中的服務探索 docker/libnetwork#1489
Swarm 模式
- 修復節點加入叢集時對節點位址的遠端偵測 #26211
- Vendor SwarmKit #26765
- 在狀態更新失敗後彈回 session docker/swarmkit#1539
- 修復可能的 raft 死結 docker/swarmkit#1537
- 修復服務在更新且沒有端點時的崩潰和端點洩漏問題 docker/swarmkit#1481
- 如果同一連接埠在
service create或service update上被發佈兩次,則產生錯誤 docker/swarmkit#1495
- 修復服務變更未被偵測到的問題,導致服務無法更新 docker/swarmkit#1497
- 不允許在 ingress 網路上建立服務 docker/swarmkit#1600
貢獻
- 更新 debian sysv-init 指令碼以使用
dockerd而非docker daemon#25869 - 改善在 MacOS Sierra 上執行 docker 用戶端時的穩定性 #26875
- 修復 debian stretch 上的安裝 #27184
Windows
- 修復在 ConEmu 中執行 docker 用戶端時箭頭導航無法運作的問題 #25578
1.12.1 (2016-08-18)
重要Docker 1.12 附帶了適用於基於 rpm 的安裝(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)的更新版 systemd 單元檔案。從舊版本的 Docker 升級時,升級過程可能不會自動安裝更新版本的單元檔案,或者如果在以下情況下無法啟動
docker service;
- systemd 單元檔案 (
/usr/lib/systemd/system/docker.service) 包含本機變更,或- 存在 systemd drop-in 檔案,且在
ExecStart指令中包含-H fd://
啟動 docker service 將會產生錯誤
Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
或
no sockets found via socket activation: make sure the service was started by systemd.
要解決此問題
- 備份目前版本的單元檔案,並將該檔案替換為 隨 Docker 1.12 附帶的版本
- 如果存在,請從
/usr/lib/systemd/system/docker.service檔案中移除Requires=docker.socket指令 - 從
ExecStart指令中移除-H fd://(在主單元檔案和任何現有的 drop-in 檔案中皆需移除)。
進行這些變更後,執行 sudo systemctl daemon-reload 和 sudo systemctl restart docker 以重新載入變更並(重新)啟動 docker 常駐程式。
用戶端
- 在
node inspect --pretty中新增Joined at資訊 #25512
- 修復
service inspect的崩潰 #25454 - 修復導致
service update --env-add無法按預期運作的問題 #25427 - 修復導致
service update --publish-add無法按預期運作的問題 #25428 - 移除
service update --network-add和service update --network-rm旗標,因為此功能尚未在 1.12 中實作,但無意中被新增至 1.12.0 的用戶端中 #25646
貢獻
網路
- 修復導致容器無法透過 Swarm 模式中 Docker overlay 驅動程式的主機名稱進行存取的問題 #25603 #25648
- 修復服務在已發佈連接埠上出現隨機網路問題 #25603
- 修復縮減和擴展服務後服務間通訊不可靠的問題 #25603
- 修復移除節點上的所有任務並將其加回後,導致與其他服務斷開連線的問題 #25603
- 修復啟動失敗的任務導致競爭,進而導致
network xxx not found錯誤並遮蔽實際錯誤的問題 #25550 - 放寬對使用非 RFC 2782 格式 SRV 記錄的外部服務的 SRV 記錄驗證 #25739
插件 (實驗性)
執行時期
- 在常駐程式日誌中遮罩加入權杖 (join tokens) #25346
安全性
- 將
/proc/timer_list新增至遮罩路徑清單,以防止來自主機的資訊洩漏 #25630 - 允許 systemd 僅使用
--cap-add SYS_ADMIN執行,而無需額外新增--cap-add DAC_READ_SEARCH或停用 seccomp 篩選 #25567
Swarm
- 修復 swarm 在失去法定人數後卡在選舉新領導者的問題 #25055
- 修復領導者故障轉移後不必要的容器重新排程 #25017
- 將 swarm 根 CA 金鑰變更為 P256 曲線 swarmkit#1376
- 允許從 swarm 中強制移除節點 #25159
- 修復節點離開 swarm 時的連線洩漏 swarmkit/#1277
- 將 swarm 憑證回溯一小時以容忍更多時鐘偏移 swarmkit/#1243
- 避免在有大量不可排程任務時使用高 CPU swarmkit/#1287
- 修復全域任務無法啟動的問題 swarmkit/#1295
- 垃圾回收 raft 日誌 swarmkit/#1327
Volume
- 在常駐程式重新啟動後持久化本機磁碟區選項 #25316
- 修復磁碟區卸載時未傳回掛載 ID 的問題 #25333
- 修復磁碟區掛載可能意外建立繫結掛載的問題 #25309
docker service create --mount type=bind,...現在正確驗證原始路徑是否存在,而不是建立它 #25494
1.12.0 (2016-07-28)
重要Docker 1.12.0 附帶了適用於基於 rpm 的安裝(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7)的更新版 systemd 單元檔案。從舊版本的 Docker 升級時,升級過程可能不會自動安裝更新版本的單元檔案,或者如果在以下情況下無法啟動
docker service;
- systemd 單元檔案 (
/usr/lib/systemd/system/docker.service) 包含本機變更,或- 存在 systemd drop-in 檔案,且在
ExecStart指令中包含-H fd://
啟動 docker service 將會產生錯誤
Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
或
no sockets found via socket activation: make sure the service was started by systemd.
要解決此問題
- 備份目前版本的單元檔案,並將該檔案替換為 隨 Docker 1.12 附帶的版本
- 如果存在,請從
/usr/lib/systemd/system/docker.service檔案中移除Requires=docker.socket指令 - 從
ExecStart指令中移除-H fd://(在主單元檔案和任何現有的 drop-in 檔案中皆需移除)。
進行這些變更後,執行 sudo systemctl daemon-reload 和 sudo systemctl restart docker 以重新載入變更並(重新)啟動 docker 常駐程式。
重要使用 Docker 1.12,Linux
docker安裝現在有兩個額外的二進位檔案;dockerd和docker-proxy。如果您有安裝docker的指令碼,請務必相應地更新它們。
建置器
- 新的
HEALTHCHECKDockerfile 指令,以支援使用者定義的健康檢查 #23218 - 新的
SHELLDockerfile 指令,以在使用 Dockerfile 中的指令 shell 形式時指定預設 shell #22489 - 新增
#escape=Dockerfile 指示詞,以支援 Dockerfile 中檔案路徑的平台特定解析 #22268 - 新增對
.dockerignore中註解的支援 #23111
- 對 Dockerfile 中的 UTF-8 支援 #23372
- 如果存在,請跳過
Dockerfile和.dockerignore中的 UTF-8 BOM 位元組 #23234 - Windows:對
ARG的支援以符合 Linux #22508
- 修復在使用橋接網路停用的常駐程式建置時的錯誤訊息 #22932
貢獻
- 為 Centos 7 和 Oracle Linux 7 啟用 seccomp #22344
- 移除 systemd 單元中的 MountFlags 以允許共用掛載傳播 #22806
發布
- 新增
--max-concurrent-downloads和--max-concurrent-uploads常駐程式旗標,適用於網路連線不支援多重下載/上傳的情況 #22445
日誌記錄
- Syslog 日誌驅動程式現在支援 DGRAM sockets #21613
- 為
docker logs新增--details選項以同時顯示日誌標籤 #21889 - 啟用 syslog 記錄器以存取 env 和 labels #21724
- 額外的 syslog-format 選項
rfc5424micro,以允許 syslog 時間戳記中的微秒解析度 #21844
網路
- 使用 IPVS 的內建基於虛擬 IP 的內部和 ingress 負載平衡 #23361
- 使用 ingress overlay 網路的路由網格 (Routing Mesh) #23361
- 使用加密控制平面和資料平面進行安全的多主機 overlay 網路 #23361
- MacVlan 驅動程式已脫離實驗階段 #23524
- 為
network ls新增driver篩選器 #22319 - 新增
network篩選器至docker ps --filter#23300 - 為
create、run和network connect新增--link-local-ip旗標,以指定容器的連結本機位址 #23415 - 新增網路標籤篩選器支援 #21495
- 在 Swarm 模式下移除對 Overlay 網路外部 KV-Store 的相依性 #23361
- 新增容器短 ID 作為預設網路別名 #21901
run選項--dns和--net=host不再互斥 #22408
- 修復重新命名具有產生名稱的容器時的 DNS 問題 #22716
- 允許同時使用
network inspect -f {{.Id}}和network inspect -f {{.ID}}來解決 inspect 輸出不一致的問題 #23226
插件 (實驗性)
- 新增新的
plugin指令來管理插件,包含install、enable、disable、rm、inspect、set子指令 #23446
遠端 API (v1.24) 與用戶端
- 將二進位檔案分割為兩個:
docker(用戶端)和dockerd(常駐程式) #20639 - 為
docker images --filter新增before和since篩選器 #22908 - 為
docker search新增--limit選項 #23107 - 為
docker search新增--filter選項 #22369 - 將安全性選項新增至
docker info輸出 #21172 #23520 - 將不安全的登錄檔新增至
docker info輸出 #20410 - 擴充 Docker 授權以包含 TLS 使用者資訊 #21556
- devicemapper:透過
docker info公開最小精簡集區可用空間 #21945
- API 現在在發生錯誤時返回 JSON 物件,使其更一致 #22880
- 防止
docker run -i --restart在退出時掛起 #22777 - 修復 API/CLI 在主機名稱驗證上的差異 #21641
- 修復
stats中大小格式從 HumanSize 到 BytesSize 的差異 #21773 - authz:當請求被拒絕時,返回禁止退出碼 (403) #22448
- Windows:修復 tty 相關的顯示問題 #23878
執行時期
- 將使用者空間代理分割為單獨的二進位檔案 (
docker-proxy) #23312 - 新增
--live-restore常駐程式旗標,以便在常駐程式關閉時保持容器執行,並在啟動時重新獲得控制 #23213 - 新增 OCI 相容執行階段的能力(透過
--add-runtime常駐程式旗標),並在create和run上使用--runtime進行選擇 #22983 - 用於 Linux 4.0+ 的新
overlay2graphdriver,支援多個底層目錄 #22126 - 新的載入/儲存映像檔事件 #22137
- 新增對透過 systemd 重新載入常駐程式設定的支援 #22446
- 新增 btrfs 的磁碟配額支援 #19651
- 新增 zfs 的磁碟配額支援 #21946
- 新增對
docker run --pid=container:<id>的支援 #22481 - 使預設 seccomp 設定檔與選定功能對齊 #22554
- 當常駐程式重新載入其設定時,新增一個
daemon reload事件 #22590 - 在 pprof 分析器中新增
trace能力,以二進位形式顯示執行軌跡 #22715 - 新增一個
detach事件 #22898 - 新增對使用
--sysctl設定 sysctl 的支援 #19265 - 為
create和run新增--storage-opt旗標,允許設定 devicemapper 的size#19367 - 新增預設值為
-500的--oom-score-adjust常駐程式旗標,使常駐程式較不容易在容器前被殺掉 #24516
- 取消棄用
run、build、create、update上--cpu-shares的短別名-c#22621 - 防止在 eCryptfs 掛載上使用 aufs 和 overlay graphdrivers #23121
- 修復 tmpfs 掛載順序的問題 #22329
- 建立的容器不再列在
docker ps -a -f exited=0中 #21947 - 修復容器卡在「移除中」(Removal In Progress) 狀態的問題 #22423
- 修復在 run/create 上未指定指令時返回 HTTP 500 而非 400 的錯誤 #22762
- 修復
--detach-keys的錯誤,導致符合 detach 鍵字首的輸入未被保留 #22943 - 使用
--privileged模式時,現在已停用 SELinux 標籤 #22993 - 如果掛載到容器中,
/etc/hosts、/etc/resolv.conf、/etc/hostname不再進行 SELinux 重新標籤 #22993 - 修復
--tmpfs行為在掛載選項方面的不一致 #22438 - 修復常駐程式在啟動時掛起的問題 #23148
- 忽略 SIGPIPE 事件,以防止 journald 重新啟動在某些情況下導致 docker 崩潰 #22460
- 容器在錯誤時不會從統計資訊清單中移除 #20835
- 修復常駐程式重新啟動時的
on-failure重新啟動原則 #20853 - 修復容器使用另一個容器的網路時
stats的問題 #21904
Swarm 模式
- 新增
swarm指令,用於管理 swarm,包含init、join、join-token、leave、update等子指令 #23361 #24823 - 新增
service指令,用於管理整個 swarm 的服務,包含create、inspect、update、rm、ps等子指令 #23361 #25140 - 新增
node指令,用於管理節點,包含accept、promote、demote、inspect、update、ps、ls和rm等子指令 #23361 #25140 - (實驗性質)新增
stack和deploy指令,用於管理並部署多服務應用程式 #23522 #25140
Volume
- 新增對本機與全域磁碟區範圍(volume scopes)的支援(類比網路範圍) #22077
- 允許磁碟區驅動程式提供
Status欄位 #21006 - 新增對磁碟區名稱/驅動程式的過濾器支援 #21361
- 掛載/卸載操作現在會接收一個不透明 ID,讓磁碟區驅動程式能區分不同的呼叫者 #21015
棄用
- 環境變數
DOCKER_CONTENT_TRUST_OFFLINE_PASSPHRASE和DOCKER_CONTENT_TRUST_TAGGING_PASSPHRASE已分別重新命名為DOCKER_CONTENT_TRUST_ROOT_PASSPHRASE和DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE#22574 - 移除已棄用的
syslog-tag、gelf-tag、fluentd-tag日誌選項,改用更通用的tag選項 #22620 - 移除在 API 容器啟動時傳遞 HostConfig 的棄用功能 #22570
- 移除 docker tag 上已棄用的
-f/--force旗標 #23090 - 移除已棄用的
/containers/<id|name>/copy端點 #22149 - 移除 docker ps 上已棄用的
--since和--before旗標 #22138 - 棄用舊版 3 引數形式的
docker import#23273
1.11.2 (2016-05-31)
網路
執行時期
- 修復執行
docker build時可能發生的崩潰 (panic) 問題 (#23032) - 修復
--user參數的解讀問題 (#22998) - 修復導致容器統計數據無法正確回報的錯誤 (#22955)
- 修復 daemon 重啟後容器無法重啟的問題 (#22947)
- 修復在 Ubuntu 16.04 上執行 32 位元二進位檔案時的問題 (#22922)
- 修復刪除映像檔與 attach 容器時可能發生的死鎖 (#22918)
- 修復若容器依賴於容器化叢集儲存(cluster store),在 daemon 重啟後容器無法啟動的問題 (#22561)
- 修復在 CentOS 上使用 devicemapper 時導致
docker ps卡住的問題 (#22168, #23067) - 修復在使用 devicemapper 時無法
docker exec進入容器的錯誤 (#22168, #23067)
1.11.1 (2016-04-26)
發布
- 修正 schema2 資訊清單媒體類型為
application/vnd.docker.container.image.v1+json(#21949)
文件
- 補上 1.11.0 變更所缺失的 API 文件 (#22048)
建置器
- 將透過參數傳遞給
docker build的標籤(label),視為處理後的Dockerfile結尾處的隱含LABEL指令 (#22184)
網路
執行時期
- 修復無法透過設定檔重新載入標籤設定的錯誤 (#22299)
- 修復導致掛載
/var/run的容器會阻止其他容器被移除的迴歸問題 (#22256) - 修復無法同時更新
memory-swap和memory值的問題 (#22255) - 修復 1.11.0 的迴歸問題,即若未提供
serveraddress,/auth端點不會初始化該值 (#22254) - 新增取消排程重啟時對容器暫存檔的清理動作 (#22237)
- 移除未指定重啟原則時出現的嚇人錯誤訊息 (#21993)
- 修復透過 json 規範啟動外掛程式(plugins)時發生的崩潰問題 (#22191)
- 修正重啟延遲邏輯,若容器執行至少 10 秒,則正確重置延遲時間 (#22125)
- 移除容器重啟被取消時出現的錯誤訊息 (#22123)
- 修復
docker在docker exec後無法正確清理的問題 (#22121) - 修復執行併發
docker stats指令時可能發生的崩潰問題 (#22120)` - 撤銷對不存在的主機目錄自動建立功能的棄用 (#22065)
- 隱藏 daemon 關閉時誤導性的 RPC 錯誤 (#22058)
1.11.0 (2016-04-13)
重要從 Docker 1.11 開始,Linux Docker 安裝由 4 個二進位檔案組成(
docker、docker-containerd、docker-containerd-shim和docker-runc)。若您的指令碼依賴於docker作為單一靜態二進位檔案,請務必更新它們。否則與 daemon 的互動保持不變,其他二進位檔案的使用應是透明的。Windows Docker 安裝仍為單一二進位檔案:docker.exe。
建置器
- 修復 Docker 在處理
WORKDIR指令時未正確使用 uid/gid 的錯誤 (#21033) - 修復使用 userns 時複製操作未正確使用 uid/gid 的錯誤 (#20782, #21162)
用戶端
- 安全選項已棄用使用
:分隔符,應改用=(#21232)
- linux-cgo 終端機不再啟用後處理 (Post processing) (#20587)
- Docker 現在禁止使用空使用者名稱登入(空白會被修剪) (#19806)
- Docker 若 save/export 指令失敗,現在會自行清理 (#17849)
發布
docker login現在使用 docker/distribution 中的實作來處理權杖 (#20832)docker login將不再提示輸入電子郵件 (#20565)- 若無基本驗證憑證,Docker 現在會回退至 registry V1 (#20241)
- Docker 現在會在網路錯誤/超時後,嘗試從上次中斷的地方恢復層下載 (#19840)
日誌記錄
- 修復 journald 日誌驅動程式中的競爭條件(race) (#21311)
- Docker syslog 驅動程式現在在發出日誌時使用 RFC-5424 格式 (#20121)
- Docker GELF 日誌驅動程式現在允許透過
gelf-compression-type和gelf-compression-level選項指定壓縮演算法與層級 (#19831) - Docker daemon 學會了透過
--raw-logs選項輸出無顏色的日誌 (#19794)
- Windows 平台上的 Docker 現在包含一個名為
etwlogs的 ETW (Event Tracing in Windows) 日誌驅動程式 (#19689)
- Journald 日誌驅動程式學會了如何處理標籤 (#19564)
- Fluentd 日誌驅動程式學會了以下選項:
fluentd-address、fluentd-buffer-limit、fluentd-retry-wait、fluentd-max-retries和fluentd-async-connect(#19439) - Docker 學會了透過新的
gcplogs日誌驅動程式將日誌發送到 Google Cloud。 (#18766)
其他
- 當使用
docker save同時儲存連結的映像檔時,隨後的docker load將正確還原其父/子關係 (#21385) - 新增了對 OpenBSD 建置 Docker CLI 的支援 (#21325)
- 現在可以在建立網路、磁碟區和映像檔時套用標籤 (#21270)
dockremap現在建立為系統使用者 (#21266)
docker info現在會回報 cgroup KernelMemory 的值,若不支援則會發出警告 (#20863)docker info現在也會回報正在使用的 cgroup 驅動程式 (#20388)- Docker 自動完成功能現在可用於 PowerShell (#19894)
dockerinit不再存在 (#19490,#19851)
網路
docker network inspect現在會回報所有端點,無論其是否有作用中的容器 (#21160)
- 新增 MacVlan 和 IPVlan 網路驅動程式的實驗性支援 (#21122)
docker network ls的輸出現在按網路名稱排序 (#20383)
- 修復 Docker 允許使用保留名稱
default建立網路的錯誤 (#19431)
docker network inspect回傳網路是否為內部(internal)網路 (#19357)
- 建立網路時透過明確選項控制 IPv6 (
docker network create --ipv6)。這在docker network inspect中顯示為新的EnableIPv6欄位 (#17513)
- 嵌入式 DNS 伺服器支援 AAAA 記錄(又稱 IPv6 服務發現) (#21396)
- 修正不將 docker 網域 IPv6 查詢轉發至外部伺服器 (#21396)
- 嵌入式 DNS 伺服器支援多個 A/AAAA 記錄用於 DNS 輪詢(Round robin) (#21019)
- 修正 daemon 非正常重啟後端點計數不一致的問題 (#21261)
- 將公開連接埠與連接埠對應選項的所有權從 Endpoint 移至 Sandbox (#21019)
- 修正主機配置 ipv6.disable=1 時導致 docker 重載失敗的錯誤 (#21019)
- 新增內建 nil IPAM 驅動程式 (#21019)
- 修正 iptables.Exists() 邏輯中的錯誤 #21019
- 修正使用 overlay 網路時的 Veth 介面洩漏 (#21019)
- 修正關閉期間刪除網路導致 docker 重載失敗的錯誤 (#20214)
- 確保 firewalld 重載時會重新建立 iptables 鏈 (#20419)
- 允許在配置重載期間傳遞全域資料儲存庫(global datastore) (#20419)
- 針對匿名容器,將別名用於 IP 到名稱的映射,例如:DNS PTR 記錄 (#21019)
- 修復刪除 /etc/hosts 檔案項目時發生的崩潰 (#21019)
- 從容器網路命名空間(net namespace)來源轉發 DNS 查詢 (#21019)
- 修復在 daemon 重載時保留 bridge 網路內部模式設定的問題 ([#21780] (https://github.com/docker/docker/pull/21780))
- 修復在 daemon 重載時保留 IPAM 驅動程式選項設定的問題 ([#21914] (https://github.com/docker/docker/pull/21914))
插件
執行時期
- 修復在參數無效的容器啟動後進行清理時發生的崩潰 (#21716)
- 修復事件計時器過早停止的競爭條件 (#21692)
- 修復層儲存庫(layer store)中的競爭條件,可能導致映射損壞並使處理程序崩潰 (#21677)
- 取消對掛載主機目錄自動建立的棄用。此功能在 Docker 1.9 (#21666) 中被標記為棄用,但經決定這對向後相容性影響過大,因此決定保留該功能。
- 容器現在可以在啟用
userns時共用 NET 和 IPC 命名空間 (#21383) docker inspect <image-id>現在會公開 rootfs 層 (#21370)- Docker Windows 獲得了最小化的
top實作 (#21354)
- 修復 Docker 在配置重載時未驗證設定檔的錯誤 (#21089)
- 修復若初始啟動失敗,attach 時會發生的卡住問題 (#21048)
- 修復 daemon 設定檔中 registry 服務選項未被正確納入考量的問題 (#21045)
- 修復 exec 和 resize 操作之間的競爭條件 (#21022)
- 修復過濾 Docker 事件時奈秒(nanoseconds)未被正確考慮的問題 (#21013)
- 修正傳遞 64 位元組 ID 給 Docker 指令時的處理方式 (#21002)
- Docker 現在成功刪除網路後會回傳
204(即 http.StatusNoContent) 代碼 (#20977)
- 修復若即將被殺死的處理程序已自行退出,daemon 會無限期等待的錯誤 (#20967
- devmapper 驅動程式學會了
dm.min_free_space選項。若映射設備的剩餘空間達到傳遞的值,將禁止建立新設備。 (#20786)
- Docker 現在可以透過
--security-opt=no-new-privileges旗標防止容器內的處理程序獲得新權限 (#20727)
- 以
--device選項啟動容器現在會正確解析符號連結 (#20684)
- Docker 現在依賴
containerd和runc來產生容器。 (#20662)
- 修復 Docker 配置重載,使其僅變更給定設定檔中存在的值 (#20604)
- Docker 現在允許在
--net=host時透過--hostname旗標設定容器主機名稱 (#20177) - Docker 現在允許在執行
--userns-remap時執行特權容器,若同時指定--privileged和新的--userns=host旗標 (#20111)
- 修復 Docker 在崩潰後重啟時無法正確清理舊容器的問題 (#19679)
- Docker 若無法識別設定檔中的設定鍵,現在會報錯 (#19517)
- 修復 daemon 啟動時,若容器依賴於在容器內執行的外掛程式,容器載入失敗的問題 (#19500)
docker update學會了如何變更容器重啟原則 (#19116)docker inspect現在也回傳一個新的State欄位,以人類可讀的方式包含容器狀態(例如:created、restarting、running、paused、exited或dead)(#18966)
- Docker 學會了透過
pids-limit旗標限制容器內的活動 PID(即處理程序)數量。注意:這需要在核心配置中設定CGROUP_PIDS=y。 (#18697)
docker load現在有--quiet選項可抑制載入輸出 (#20078)- 修復 IPv6 對等節點(peers)鄰居發現中的錯誤 (#20842)
- 修復若容器以無效選項啟動時,清理期間發生的崩潰 (#21802)
- 修復終端機關閉時無法停止容器的情況 (#21840)
安全性
- 具有
pcp_pmcd_tselinux 類型的物件被賦予了對/var/lib/docker(/.*)?的管理權限 (#21370) restart_syscall、copy_file_range、mlock2加入預設 seccomp 設定檔中允許的呼叫清單 (#21117, #21262)send、recv和x32被新增至預設 seccomp 設定檔中允許的系統呼叫與架構清單 (#19432)- Docker Content Trust 現在請求伺服器執行快照簽署 (#21046)
- 使用 YubiKeys 進行 Content Trust 簽署的支援已脫離實驗性質 (#21591)
磁碟區
- 修復無法使用單字母目錄名稱作為磁碟區來源的問題 (#21106)
docker run -v現在接受新的nocopy旗標。這告訴 runtime 不要將容器路徑內容複製到磁碟區中(這是預設行為) (#21223)
1.10.3 (2016-03-10)
執行時期
- 修復 Docker 客戶端以 "Unrecognized input header" 錯誤退出的問題 #20706
- 修復若 Exec 同時以
AttachStdin和Detach啟動時 Docker 退出問題 #20647
發布
外掛程式系統(Plugin system)
- 修復 SELinux 啟用時阻止磁碟區外掛程式啟動的問題 #20834
- 防止若磁碟區外掛程式對 Get 請求回傳空回應時 Docker 退出 #20682
- 修復若外掛程式發生錯誤時,外掛程式系統洩漏檔案描述符的問題 #20680
安全性
- 修復 docker build 期間 linux32 模擬失敗的問題 #20672 這是由於
personality系統呼叫被預設 seccomp 設定檔封鎖所致。 - 修復 Oracle XE 10g 在容器中啟動失敗的問題 #20981 這是由於
ipc系統呼叫被預設 seccomp 設定檔封鎖所致。 - 修復使用者命名空間(user namespaces)在 Linux From Scratch 上無法運作的問題 #20685
- 修復若啟用 userns,且
subuid或subgid檔案包含註解時,阻止 daemon 啟動的問題 #20725
1.10.2 (2016-02-22)
執行時期
- 防止 systemd 在其配置重載時刪除容器的 cgroups #20518
- 修復掛載
/dev/mqueue時忽略--read-only以解決 SELinux 問題 #20333 - 修復使用 userns 時在
docker cp期間使用的 chown 權限 #20446 - 修復所有布林值預設為
true的配置載入問題 #20471 - 修復
docker logs -f的偶發崩潰 #20522
發布
- 若刪除失敗,保留層參考以避免嚴重不一致狀態 #20513
- 優雅地處理取消遷移(migration)時的一個極端情況 #20372
- 修復壓縮數據上的 docker import #20367
- 修復遷移期間 tar-split 檔案損壞,導致稍後 docker push 和 docker save 失敗 #20458
網路
- 修復若嵌入式 DNS 被發送垃圾數據時的 daemon 崩潰 #20510
磁碟區
- 修復具有相同名稱的多個磁碟區參考問題 #20381
安全性
- 修復潛在的快取損壞和委派衝突問題 #20523
1.10.1 (2016-02-11)
執行時期
- 遷移嚴重失敗時不要停止 daemon #20156
- 修復遷移至內容可尋址(content-addressable)映像檔的各種問題 #20058
- 修復 ZFS 使用者命名空間權限錯誤 #20045
- 不要將 /dev/mqueue 從主機洩漏給所有容器,保持其為容器特定 #19876 #20133
- 修復
docker ps --filter before=...在未提供-a旗標時顯示已停止容器的問題 #20135
安全性
- 修復阻止 docker 事件與授權外掛程式正確運作的問題 #20002
發布
- 新增額外驗證並防止上傳無效數據至 registries #20164
- 修復阻止映像檔參考主機名稱中使用大寫字元的迴歸問題 #20175
網路
- 修復 firewalld 存在時使用者定義網路的嵌入式 DNS 問題 #20060
- 修復關閉期間移除網路導致 Docker 無法運作的問題 #20181 #20235
- 嵌入式 DNS 現在能夠回傳壓縮結果 #20181
- 修復
userland-proxy=false下的連接埠對應問題 #20181
日誌記錄
- 修復 tcp+tls 協定被拒絕的錯誤 #20109
磁碟區
- 修復舊版磁碟區驅動程式無法接收磁碟區選項的問題 #19983
其他
- 從 Docker systemd 服務中移除 TasksMax #20167
1.10.0 (2016-02-04)
重要Docker 1.10 為映像檔和層使用新的內容可尋址儲存庫。
第一次執行 docker 時會執行遷移,根據存在的映像檔數量,這可能需要相當長的時間。請參閱 wiki 上的此頁面以獲取更多資訊:https://github.com/docker/docker/wiki/Engine-v1.10.0-content-addressability-migration 我們還發布了一個很棒的遷移工具,使您能在更新之前執行遷移以減少停機時間。Engine 1.10 遷移器可在 Docker Hub 上找到:https://hub.docker.com/r/docker/v1.10-migrator/
執行時期
- 新增
docker update指令,允許更新執行中容器的資源限制 #15078 - 新增
--tmpfs旗標至docker run以在容器中建立 tmpfs 掛載 #13587 - 新增
--format旗標至docker images指令 #17692 - 允許在檔案中設定 daemon 配置,並透過
SIGHUP訊號熱重載它 #18587 - 更新 docker 事件以包含更多後設數據與事件類型 #18888 此變更在 API 中向後相容,但在 CLI 中則否。
- 新增
--blkio-weight-device旗標至docker run#13959 - 新增
--device-read-bps和--device-write-bps旗標至docker run#14466 - 新增
--device-read-iops和--device-write-iops旗標至docker run#15879 - 新增
--oom-score-adj旗標至docker run#16277 - 新增
--detach-keys旗標至attach、run、start和exec指令,以覆蓋從容器中分離的預設按鍵序列 #15666 - 新增
--shm-size旗標至run、create和build以設定/dev/shm的大小 #16168 - 在
docker info中顯示執行中、已停止和已暫停的容器數量 #19249 - 在
docker info中顯示OSType和Architecture#17478 - 新增
--cgroup-parent旗標至daemon以設定所有容器的 cgroup 父層 #19062 - 新增
-L旗標至 docker cp 以跟隨符號連結 #16613 - 新增
status=dead過濾器至docker ps#17908
- 變更
docker run退出代碼以區分 runtime 與應用程式錯誤 #14012 - 增強
docker events --since和--until以支援奈秒和時區 #17495 - 新增
--all/-a旗標至stats以包含執行中與已停止的容器 #16742 - 將預設 cgroup-driver 變更為
cgroupfs#17704 - 使用
build -t標記映像檔時發出 "tag" 事件 #17115 - 啟動 daemon 時,盡力對連結容器進行啟動順序安排 #18208
- 新增在
build時增加多個標籤的能力 #15780 - 允許對任何 url 進行
OPTIONS請求,從而修復 CORS 問題 #19569
- 修復
docker build上的--quiet旗標,使其真正安靜 #17428 - 修復
docker images --filter dangling=false,現在顯示所有非懸空映像檔 #19326 - 修復導致自動重啟在重啟時關閉的競爭條件 #17629
- 識別 GPFS 檔案系統 #19216
- 修復阻止啟動容器的隱晦錯誤 #19751
- 禁止在容器重啟期間執行
exec#19722 - devicemapper:增加
--storage-opt dm.basesize現在會在 daemon 重啟時增加基礎設備大小 #19123
安全性
- 新增
--userns-remap旗標至daemon以支援使用者命名空間(先前為實驗性質) #19187 - 新增
--security-opt中自訂 seccomp 設定檔的支援 #17989 - 新增預設 seccomp 設定檔 #18780
- 新增
--authorization-plugin旗標至daemon以自訂 ACL #15365 - Docker Content Trust 現在支援讀寫使用者委派的能力 #18887 這是一個選用的、選擇性加入的功能,需要明確使用 Notary 指令列工具才能啟用。在特定儲存庫中啟用委派支援,若啟用了內容信任,將會破壞 Docker 1.9 和 1.8 從該儲存庫提取的能力。
- 允許在使用 BTRFS 儲存驅動程式時在容器中執行 SELinux #16452
發布
- 為映像檔和層使用內容可尋址儲存庫 #17924 第一次執行 docker 時會執行遷移;根據存在的映像檔和容器數量,這可能需要相當長的時間。映像檔不再依賴父鏈,而是包含層參考清單。
docker load/docker savetarballs 現在也包含內容可尋址映像檔配置。更多資訊:https://github.com/docker/docker/wiki/Engine-v1.10.0-content-addressability-migration - 新增對新 資訊清單格式 ("schema2") 的支援 #18785
- 針對推送和提取進行大量改進:效能++、下載失敗重試、客戶端中斷連線時取消 #18353, #18418, #19109, #18353
- 限制 v1 協定回退 #18590
- 修復 docker 可能會無限期等待不存在的處理程序提取映像檔的問題 #19743
網路
- 使用 DNS 發現代替
/etc/hosts#19198 - 支援網路範圍別名(network-scoped alias),使用
run上的--net-alias和network connect上的--alias#19242 - 在
run和network connect上新增--ip和--ip6以支援網路中容器的自訂 IP 位址 #19001 - 新增
--ipam-opt至network create以傳遞自訂 IPAM 選項 #17316 - 新增
--internal旗標至network create以限制網路的外部存取 #19276 - 新增
kv.path選項至--cluster-store-opt#19167 - 新增
discovery.heartbeat和discovery.ttl選項至--cluster-store-opt以配置發現 TTL 和心跳計時器 #18204 - 新增
--format旗標至network inspect#17481 - 新增
--link至network connect以提供容器本機別名 #19229 - 支援與遠端 IPAM 外掛程式進行能力交換(Capability exchange) #18775
- 新增
--force至network disconnect以強制中斷容器與網路的連線 #19317
- 支援使用內建 overlay 驅動程式進行多主機網路連線,適用於所有引擎支援的核心:3.10+ #18775
--link現在在docker run上支援使用者定義網路中的容器 #19229- 增強
docker network rm以允許移除多個網路 #17489 - 在
network inspect中包含容器名稱 #17615 - 在
network inspect中包含使用者定義網路自動產生的子網(subnets) #17316 - 新增
--filter旗標至network ls以隱藏預定義網路 #17782 - 新增對已停止容器進行網路連線/中斷連線的支援 #18906
- 新增網路 ID 至容器 inspect #19323
- 修復 Docker 無法在兩個或多個預設路由下啟動的 MTU 問題 #18108
- 修復容器重複 IP 位址的問題 #18106
- 修復有時阻止 docker 建立 bridge 網路的問題 #19338
- 使用
--net=host時,不要替換 127.0.0.1 名稱伺服器 #19573
日誌記錄
磁碟區
- 新增設定磁碟區掛載傳播模式(mount propagation mode)的支援 #17034
- 新增
ls和inspect端點至磁碟區外掛程式 API #16534 現有外掛程式需要使用這些新 API 來滿足使用者的期望,為此,請使用新的 MIME 類型application/vnd.docker.plugins.v1.2+json#19549
- 修復數據未被複製到命名磁碟區的問題 #19175
- 修復阻止磁碟區驅動程式容器化的問題 #19500
- 修復
docker volumes ls --dangling=false,現在顯示所有非懸空磁碟區 #19671 - 容器移除時不要移除命名磁碟區 #19568
- 允許外部磁碟區驅動程式託管匿名磁碟區 #19190
建置器
- 新增對
.dockerignore中**的支援,以通配多層目錄 #17090
用戶端
- 新增支援透過
DOCKER_API_VERSION環境變數覆蓋要使用的 API 版本 #15964
- 修復阻止 Windows 客戶端登入 Docker Hub 的錯誤 #19891
其他
- systemd:在 systemd 服務檔案中設定 TasksMax 和 LimitNPROC #19391
棄用項目
- 移除 LXC 支援。LXC 驅動程式在 Docker 1.8 中被棄用,現已被移除 #17700
- 移除
--exec-driverdaemon 旗標,因為它不再使用 #17700 - 移除舊的已棄用單短橫線長 CLI 旗標(例如
-rm;請改用--rm) #17724 - 棄用 API 容器啟動時的 HostConfig #17799
- 棄用新到 EOL 的 Linux 發行版 Docker 套件:Fedora 21 和 Ubuntu 15.04 (Vivid) #18794, #18809
- 棄用 docker tag 的
-f旗標 #18350
1.9.1 (2015-11-21)
執行時期
- 若映像檔無法還原,不要阻止 daemon 啟動 (#17695)
- 強制 daemon 關閉/初始化時卸載 IPC 掛載 (#17539)
- 將 IPC 卸載錯誤轉為警告 (#17554)
- 修復
docker stats效能迴歸 (#17638) - 澄清若
--log-driver=none時docker logs的晦澀錯誤訊息 (#17767) - 修復罕見的崩潰 (#17639, #17634, #17703)
- 修復點前綴檔案的 opq whiteouts 問題 (#17819)
- devicemapper:基於效能考量,嘗試預設為 xfs 而非 ext4 (#17903, #17918)
- devicemapper:修復 docker info 中顯示的 fs (#17974)
- selinux:僅在使用者透過
z選項請求時才重新標記 (#17450, #17834) - 正規化名稱時不要進行網路呼叫 (#18014)
用戶端
- 修復 windows 上的
docker login(#17738) - 修復未連線至 daemon 時
docker inspect的輸出錯誤 (#17715) - 修復
docker inspect -f {{.HostConfig.Dns}} somecontainer(#17680)
建置器
- 修復 ADD/COPY 中符號連結行為的迴歸 (#17710)
網路
- 允許將網路 ID 作為
--net的參數傳遞 (#17558) - 修正
host網路連線至主機,並防止與主機中斷連線 (#17476) - 修正若閘道 IP 落在 IP 範圍內且 IP 範圍不是網路中第一個區塊時的
--fixed-cidr問題 (#17853) - 還原預設
bridge網路中從MAC位址產生IPv6的決定論 (#17890) - 僅允許對 docker run 時建立的端點進行連接埠對應 (#17858)
- 修正端點刪除錯誤及潛在的過期 sbox (#18102)
發布
- 當磁碟上的 v1Compatibility 檔案不一致時,修正 v2 推送中的父鏈 (#18047)
1.9.0 (2015-11-03)
執行時期
docker stats現在回傳區塊 IO 指標 (#15005)docker stats現在詳細說明每個介面的網路統計數據 (#15786)- 新增
ancestor=<image>過濾器至docker ps --filter旗標,以根據祖先映像檔過濾容器 (#14570) - 新增
label=<somelabel>過濾器至docker ps --filter,以根據標籤過濾容器 (#16530) - 新增
--kernel-memory旗標至docker run(#14006) - 新增
--message旗標至docker import,允許指定選擇性的訊息 (#15711) - 新增
--privileged旗標至docker exec(#14113) - 新增
--stop-signal旗標至docker run,允許更換容器處理程序的停止訊號 (#15307) - 新增新的
unless-stopped重啟原則 (#15348) - inspect 映像檔現在回傳標籤 (#13185)
- 新增容器大小資訊至
docker inspect(#15796) - 新增
RepoTags和RepoDigests欄位至/images/{name:.*}/json(#17275)
- 從 API 移除已棄用的
/container/ps端點 (#15972) - 發送並記錄
/exec/<name>/start的正確 HTTP 代碼 (#16250) - 在共用 IPC 命名空間的容器之間共用 shm 和 mqueue (#15862)
- 事件流(Event stream)現在顯示設定了
--oom-kill-disable時的 OOM 狀態 (#16235) - 確保特殊網路檔案(/etc/hosts 等)若以
ro選項掛載則為唯讀 (#14965) - 提升
rmi效能 (#16890) - 除連結外,不要更新預設 bridge 網路的 /etc/hosts (#17325)
- 修復重複容器名稱的衝突 (#17389)
- 修復
docker inspect中範本執行不正確的問題 (#17284) - 棄用 docker run 中
--cpu-shares的-c短旗標變體 (#16271)
用戶端
- 允許
docker import從本機檔案匯入 (#11907)
建置器
- 新增
STOPSIGNALDockerfile 指令,允許為容器處理程序設定不同的停止訊號 (#15307) - 新增
ARGDockerfile 指令,以及docker build的--build-arg旗標,允許新增建置時環境變數 (#15182)
- 提升快取缺失效能 (#16890)
儲存
- devicemapper:實作延遲刪除能力 (#16381)
網路
docker network脫離實驗性質並納入標準發行版 (#16645)- 新的網路頂層概念,具有相關的子指令和 API (#16645) 警告:該 API 與實驗性 API 不同
- 支援多個隔離/微分割網路 (#16645)
- 使用基於 VXLAN 的 overlay 驅動程式進行內建多主機網路連線 (#14071)
- 支援第三方網路外掛程式 (#13424)
- 動態將容器連線至多個網路的能力 (#16645)
- 透過可插拔 IPAM 驅動程式支援使用者定義 IP 位址管理 (#16910)
- 新增 daemon 旗標
--cluster-store和--cluster-advertise用於內建節點發現 (#16229) - 新增
--cluster-store-opt用於設定 TLS 設定 (#16644) - 新增
--dns-opt至 daemon (#16031)
- 在 API v1.21 中棄用以下容器
NetworkSettings欄位:EndpointID、Gateway、GlobalIPv6Address、GlobalIPv6PrefixLen、IPAddress、IPPrefixLen、IPv6Gateway和MacAddress。這些現在特定於bridge網路。使用NetworkSettings.Networks來檢查每個網路的容器網路設定。
磁碟區
- 新的頂層
volume子指令和 API (#14242)
- 將 API 磁碟區驅動程式設定移至主機特定配置 (#15798)
- 若磁碟區名稱不唯一則列印錯誤訊息 (#16009)
- 確保從 Dockerfiles 建立的磁碟區始終使用本機磁碟區驅動程式 (#15507)
- 棄用對繫結掛載(bind mounts)自動建立缺失的主機路徑 (#16349)
日誌記錄
- 新增 Amazon CloudWatch 的
awslogs日誌驅動程式 (#15495) - 新增通用
tag日誌選項,允許自訂傳遞給驅動程式的容器/映像檔資訊 (#15384)
- 為 journald 驅動程式實作
docker logs端點 (#13707) - 棄用驅動程式特定日誌標籤 (#15384)
發布
docker search現在適用於部分名稱 (#16509)
- 推送優化:避免緩衝至檔案 (#15493)
- Daemon 將顯示已經由另一個客戶端提取的映像檔的進度 (#15489)
- 僅請求執行目前操作所需的權限 (#)
- 將信任金鑰(以及各自的環境變數)從
offline改為root,將tagging改為repository(#16894)
- 棄用信任金鑰環境變數
DOCKER_CONTENT_TRUST_OFFLINE_PASSPHRASE和DOCKER_CONTENT_TRUST_TAGGING_PASSPHRASE(#16894)
安全性
- 新增 SELinux 設定檔至 rpm 套件 (#15832)
- 修復 deb 套件中提供的 AppArmor 設定檔的各種問題 (#14609)
- 新增防止寫入 /proc 的 AppArmor 策略 (#15571)
1.8.3 (2015-10-12)
發布
- 修復導致本機圖形中毒的層 ID (CVE-2014-8178)
- 修復資訊清單驗證和解析邏輯錯誤,允許繞過摘要驗證 (CVE-2014-8179)
- 新增
--disable-legacy-registry以防止 daemon 使用 v1 registry
1.8.2 (2015-09-10)
發布
- 修復處理 GNU LongLink 和 LongName 項目的罕見極端情況。
- 修復 docker pull 上的 ^C。
- 修復客戶端中斷連線時的 docker pull 問題。
- 修復當記錄器未正確配置時導致 daemon 崩潰的問題。
- 修復從 registry V2 提取映像檔時的 goroutine 洩漏。
執行時期
- 修復在 Docker 容器內執行的 docker daemon 掛載 cgroups 的錯誤。
- 正確初始化日誌配置。
用戶端
- 當有預設格式時正確處理
docker ps中的-q旗標。
網路
- 修復 netlink 的幾個極端情況。
貢獻
- 修復 bash 完成(bash completion)的幾個問題。
1.8.1 (2015-08-12)
發布
- 修復推動多個標籤導致無效映像檔的錯誤
1.8.0 (2015-08-11)
發布
- 受信任的拉取、推動和建置,預設禁用
- 使 tar 層在 registries 之間具有決定論
- 不允許刪除執行中容器的映像檔
- 檢查要載入的標籤名稱是否為有效摘要
- 允許單字元儲存庫名稱
- 為無效標籤名稱新增更準確的錯誤描述
- 使建置快取忽略 mtime
Cli
- 新增對 DOCKER_CONFIG/--config 的支援以指定設定檔目錄
- 為 docker inspect 指令新增 --type 旗標
- 使用
--format新增格式化選項至docker ps - 使用新子指令
docker daemon取代docker -d
- Zsh 完成更新和改進
- 在 bash 完成中新增一些缺失的事件
- 支援
docker -H中具有基本路徑的 daemon urls - 驗證 docker ps 的 status= 過濾器
- 在 docker ps 中顯示容器何時處於 --net=host
- 擴展 docker inspect 以匯出與圖形驅動程式相關的映像檔後設數據
- 還原 --default-gateway{,-v6} daemon 選項
- 在 docker ps 中新增缺失的未公開連接埠
- 允許在
docker events中將持續時間字串作為 --since/--until - 在
docker inspect中公開更多掛載資訊
執行時期
- 新增新的 Fluentd 日誌驅動程式
- 允許
docker import從本機檔案載入 - 新增透過 UDP 進行 GELF 的日誌驅動程式
- 允許使用
docker cp將檔案從主機複製到容器 - 將磁碟區驅動程式從實驗性質提升至主版本
- 新增 json-file 日誌驅動程式的 rollover 選項,以及 --log-driver-opts 旗標
- 新增記憶體 swappiness 調優選項
- 特權模式下移除 cgroup 唯讀旗標
- 使唯讀容器的 /proc、/sys 和 /dev 唯讀
- 預設新增 cgroup 繫結掛載
- Overlay:在
docker inspect中匯出容器和映像檔的後設數據 - Devicemapper:外部設備啟用
- Devicemapper:啟動時比較基礎設備的 uuid
- 從 registry 加密套件清單中移除 RC4
- 新增 syslog-facility 選項
- LXC execdriver 與近期 LXC 版本的相容性
- 標記 LXC execdriver 為棄用(將隨 runc 遷移而移除)
插件
- 分離外掛程式通訊端和規範位置
- 允許與外掛程式進行 TLS 連線
錯誤修復
- 新增缺失的 'Names' 欄位至 /containers/json API 輸出
- 使懸空映像檔的
docker rmi在拉取時安全 - Devicemapper:將預設 basesize 變更為 100G
- 帶有 sync.Mutex 和 gcc 的 Go 排程器問題
- 修復搜尋 API 端點因空 AuthConfig 而崩潰的問題
- 正確設定映像檔規範名稱
- 僅在 lxc 驅動程式使用時檢查 dockerinit
- 修復 nproc 的 ulimit 使用
- 若指定 -i,--interactive,始終 attach STDIN
- 儲存容器狀態失敗時顯示錯誤訊息
- 修復將 --bridge=none 視為禁用網路的錯誤假設
- 檢查主機配置中的無效連接埠規格
- 修復 --net=host 模式的端點離開失敗
- 修復容器未執行時 stats API 中的 goroutine 洩漏
- 讀取 apparmor 檔案前進行檢查
- 修復 DOCKER_TLS_VERIFY 被忽略的問題
- 啟動時將 umask 設定為預設值
- 更正暫停和取消暫停非執行中容器的訊息
- 調整容器建立中不允許的 CpuShares
- ZFS:正確套用 selinux 環境
- 顯示空字串而不是
當 IP opt 為 nil 時 docker kill在容器未執行時回傳錯誤- 修復 COPY/ADD 引用/json 格式
- 修復 logs -f 無輸出時的 goroutine 洩漏
- 移除 nat 套件中無效 hostport 的崩潰
- 修復 Fedora 22 中的容器連結
- 修復使用分配範圍之外的預設閘道造成的錯誤
- 以 RFC3339Nano 範本格式化 inspect 指令中的時間
- 使 registry 客戶端接受 2xx 和 3xx http 狀態回應為成功
- 修復因特定順序層下載失敗導致 daemon 崩潰的競爭問題。
- 修復 docker ps 格式無效時的錯誤。
- 移除多餘的 ip forward 檢查。
- 修復嘗試推送映像檔至儲存庫鏡像的問題。
- 修復初始化問題時清理網路入口點的錯誤。
1.7.1 (2015-07-14)
執行時期
- 修復使用
docker exec產生 exec 處理程序的預設使用者 - 使
--bridge=none不配置網路橋接 - 正確發布網路統計數據
- 修復靜態二進位檔案的隱式 devicemapper 選擇
- 修復間歇性掛起的通訊端連線
- 修復 CentOS/RHEL 6.6 上的橋接介面建立
- 修復新增至 resolv.conf 的本機 dns 查詢
- 修復 copy 指令掛載磁碟區
- 修復使用 --volumes-from 掛載的磁碟區中的讀/寫權限
Remote API
- 修復 Command 和 Entrypoint 的解組(unmarshalling)
- 設定支援的最低客戶端版本限制
- 驗證連接埠規格
- 當 attach/reattach 失敗時回傳正確錯誤
發布
- 修復提取私人映像檔
- 修復 registry V2 和 V1 之間的回退
1.7.0 (2015-06-16)
執行時期
- 實驗性功能:支援程序外磁碟區外掛程式
- 可以使用 daemon 的
--userland-proxy=false旗標禁用使用者空間代理,改用 hairpin NAT exec指令支援-u|--user旗標以指定新處理程序擁有者
- 容器的預設閘道可以使用
--default-gateway和--default-gateway-v6旗標在 daemon 範圍內指定 - CPU CFS (Completely Fair Scheduler) 配額可以使用
--cpu-quota在docker run中設定 - 容器區塊 IO 可以使用
--blkio-weight在docker run中控制 - ZFS 支援
docker logs指令支援--since引數- 可以使用
docker run --uts=host與主機共用 UTS 命名空間
品質
- 作為 libnetwork 努力的一部分,網路堆疊已完全重寫
- 引擎內部重構
- 磁碟區代碼已完全重寫以支援外掛程式工作
- 向 daemon 發送 SIGUSR1 將轉儲所有 goroutine 堆疊而不退出
建置
- 支援環境變數的 ${variable:-value} 和 ${variable:+value} 語法
- 支援資源管理旗標
--cgroup-parent,--cpu-period,--cpu-quota,--cpuset-cpus,--cpuset-mems - 具有分支和目錄的 git 內容變更
- The .dockerignore 檔案支援排除規則
發布
- 官方 registry 的 v2 鏡像支援的客戶端支援
Bug 修復
- 現在支援 Firewalld,可用時將自動使用
- 遞迴掛載 --device
1.6.2 (2015-05-13)
執行時期
- 撤銷禁止掛載至 /sys 的變更
1.6.1 (2015-05-07)
安全性
- 修復讀/寫 /proc 路徑 (CVE-2015-3630)
- 禁止 VOLUME /proc 和 VOLUME / (CVE-2015-3631)
- 修復檔案描述符 1 的開啟 (CVE-2015-3627)
- 修復容器重生時的符號連結遍歷,允許本機權限提升 (CVE-2015-3629)
- 禁止掛載 /sys
執行時期
- 更新 AppArmor 策略以不允許掛載
1.6.0 (2015-04-07)
建置器
- 從映像檔 ID 建置映像檔
- 使用資源限制建置容器,例如
docker build --cpu-shares=100 --memory=1024m... commit --change在提交映像檔時套用指定的 Dockerfile 指令import --change在匯入映像檔時套用指定的 Dockerfile 指令- 使用 CTRL-C 取消時,建置不再在背景繼續
用戶端
- Windows 支援
執行時期
- 容器和映像檔標籤
--cgroup-parent用於指定放置容器 cgroup 的父 cgroup- 日誌驅動程式,
json-file,syslog, 或none - 按 ID 提取映像檔
--ulimit用於設定容器的 ulimit- daemon 上的
--default-ulimit選項,適用於所有建立的容器(並被 run 時的--ulimit覆蓋)
1.5.0 (2015-02-10)
建置器
- 給定
docker build使用的 Dockerfile 可以透過-f旗標指定
- Dockerfile 和 .dockerignore 檔案本身可以作為 .dockerignore 檔案的一部分被排除,從而防止對這些檔案的修改使 ADD 或 COPY 指令快取失效
- ADD 和 COPY 指令接受相對路徑
- Dockerfile
FROM scratch指令現在被解釋為無基礎說明符 - 提升公開大量連接埠時的效能
Hack
- 允許 Windows 僅客戶端整合測試
- 將針對 Docker daemon 的 docker-py 整合測試納入我們的測試套件
打包
- 支援新版 registry HTTP API
- 針對大部分層級已存在的映像檔,加快
docker push速度
- 修復透過代理伺服器連接私有 registry 的問題
Remote API
- 新增端點以串流傳輸即時容器資源監控指標,可透過
docker stats指令存取 - 可使用新的
rename端點及對應的docker rename指令來重新命名容器
- 容器
inspect端點現在會顯示該容器內執行之exec指令的 ID - 容器
inspect端點現在會顯示 Docker 自動重啟該容器的次數 events端點可串流傳輸新型事件:‘OOM’(容器因記憶體不足而終止)、‘exec_create’ 和 ‘exec_start’
- 修復回傳的字串欄位若包含數字字元時,錯誤地省略周圍雙引號的問題
執行時期
- Docker daemon 提供完整的 IPv6 支援
docker run指令現在可使用--pid=host旗標來使用主機的 PID 命名空間,例如可利用容器化的除錯工具來對主機處理程序進行除錯docker run指令現在可使用--read-only旗標,將容器的根檔案系統掛載為唯讀模式;可搭配儲存卷(volumes)使用,強制容器內的處理程序僅能寫入會被持久化的位置- 可使用
--memory-swap旗標限制docker run的容器總記憶體使用量
- 大幅提升 devicemapper 儲存驅動程式的穩定性
- 與主機系統的整合更佳:重啟容器後,容器將能反映主機
/etc/resolv.conf檔案的變更 - 與主機系統的整合更佳:各容器的 iptables 規則已移至 DOCKER 鏈(chain)中
- 修復容器因記憶體不足而退出時回傳無效退出代碼的問題
其他
- 客戶端連接 Docker daemon 時,現在會正確考慮 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 環境變數
1.4.1 (2014-12-15)
執行時期
- 修復 volumes-from 和綁定掛載(bind mounts)在建立後未被正確執行的問題
1.4.0 (2014-12-11)
自 1.3.0 以來的重要功能
- 為 daemon 設定 key=value 標籤(顯示於
docker info),使用新的-labeldaemon 旗標套用 - 新增 Dockerfile 中
ENV的格式支援:ENV name=value name2=value2... - 新的 Overlayfs 儲存驅動程式
docker info現在回傳ID和Name欄位- 可依事件名稱、容器或映像檔篩選事件
docker cp現在支援從容器儲存卷複製檔案
- 修復
docker tag,使其在覆蓋現有映像檔的標籤時會遵從--force參數
1.3.3 (2014-12-11)
安全性
- 修復處理絕對符號連結時的路徑遍歷漏洞 (CVE-2014-9356)
- 修復 xz 映像檔壓縮檔的解壓縮問題,防止權限提升 (CVE-2014-9357)
- 驗證映像檔 ID (CVE-2014-9358)
執行時期
- 修復讀取映像檔壓縮檔速度緩慢時的問題
用戶端
- 修復與 stdin 重新導向相關的迴歸錯誤
- 修復
docker cp在目的地為當前目錄時的迴歸錯誤
1.3.2 (2014-11-20)
安全性
- 修復 tar 突破(breakout)漏洞
- 解壓縮現在於 chroot 沙盒中執行
- 安全性選項不再提交至映像檔
執行時期
- 修復
docker ps -f exited=1中的死結(deadlock)問題 - 修復當
--volumes-from參照到啟動失敗的容器時所產生的錯誤
Registry
--insecure-registry現在接受 CIDR 表示法,例如 10.1.0.0/16
- IP 位於 127.0.0.0/8 範圍內的私有 registry 不需要
--insecure-registry旗標
- 當啟用鏡像(mirroring)時,跳過實驗性的 registry v2 API
1.3.1 (2014-10-28)
安全性
- 防止客戶端、daemon 和 registry 回退至 < TLS 1.0 的 SSL 協定
- 透過憑證驗證與 registry 建立安全的 HTTPS 連線,除非指定
--insecure-registry,否則不支援 HTTP 回退
執行時期
- 修復儲存卷無法共用的問題
用戶端
- 修復
--iptables=false未自動設定--ip-masq=false的問題 - 修復
docker run對非 TTY 標準輸出的輸出問題
建置器
- 修復環境變數中
$的跳脫(escaping)問題 - 修復小寫
onbuildDockerfile 指令的問題 - 將環境變數展開限制為
ENV、ADD、COPY、WORKDIR、EXPOSE、VOLUME和USER
1.3.0 (2014-10-14)
自 1.2.0 以來的重要功能
- Docker
exec允許您在現有容器內執行額外的處理程序 - Docker
create讓您能夠透過 CLI 建立容器,而不需執行任何處理程序 --security-opts選項允許使用者自訂容器標籤和 apparmor 設定檔- Docker
ps篩選器
- COPY/ADD 支援萬用字元
- 將正式發布 URL 從 get.docker.io 改為 get.docker.com
- 在有效的 CIDR 範圍內分配 bridge 的 IP 位址
- 使用 drone.io 進行 PR 和 CI 測試
- 具備設定官方 registry 鏡像的能力
- 使用 docker
save時能夠儲存多個映像檔
1.2.0 (2014-08-20)
執行時期
- 讓 /etc/hosts、/etc/resolv.conf 和 /etc/hostname 在執行階段可編輯
- 使用原則(policies)自動重啟容器
- 針對大型暫存檔案使用 /var/lib/docker/tmp
- 使用
--cap-add和--cap-drop來調整您所需的 Linux 能力(capability) - 使用
--device在容器內使用裝置
用戶端
- 在私有 registry 上進行
docker search - 新增
exited篩選器至docker ps --filter
docker rm -f現在會強制終止(kill)而非停止容器
--dns旗標支援 IPv6 位址
Proxy
- Proxy 實例化為獨立處理程序
- 針對 UDP proxy 的小型錯誤修復
1.1.2 (2014-07-23)
執行時期
- 修復現有容器的埠號分配
- 修復 daemon 重啟時的容器重啟問題
打包
- 修復 Debian 上的 /etc/init.d/docker 問題
1.1.1 (2014-07-09)
建置器
- 修復 ADD 指令問題
1.1.0 (2014-07-03)
自 1.0.1 以來的重要功能
- 新增
.dockerignore支援 - 在
docker commit期間暫停容器 - 新增
--tail至docker logs
建置器
- 允許將 tar 檔案作為
docker build的內容(context)
- 修復
Dockerfiles中空格和多行的問題
執行時期
- 整體效能改進
- 允許使用
/作為docker run -v的來源 - 修復埠號分配
- 修復
docker save中的錯誤 - 新增連結(links)資訊至
docker inspect
用戶端
- 改進
docker commit的指令列解析
Remote API
- 改進
start和stop端點的狀態代碼
1.0.1 (2014-06-19)
自 1.0.0 以來的重要功能
- 增強 LXC 驅動程式的安全性
建置器
- 修復
ONBUILD指令傳遞至孫容器的問題
執行時期
- 修復事件訂閱
- 修復使用主機網路模式時的 /etc/hostname 檔案
- 允許
-h和--net=none同時使用 - 修復
--privileged下的熱插拔裝置問題
用戶端
- 修復與事件相關的偽影(artifacts)
- 修復空旗標(empty flags)導致的崩潰問題
- 修復 Mac OS X 上的
docker cp
雜項
- 修復 Mac OS X 上的編譯問題
- 修復多個競爭條件(race conditions)
1.0.0 (2014-06-09)
自 0.12.0 以來的重要功能
- 生產環境支援
0.12.0 (2014-06-05)
自 0.11.0 以來的重要功能
- 40 多項關於穩定性、效能與可用性的改進
- 新增
COPYDockerfile 指令,允許將本地檔案複製到容器中,如果該檔案是 tar 檔,則無需解壓縮 - 在
ADD時繼承主機檔案權限 - 新增
pause和unpause指令,允許使用 cgroup freezer 暫停和恢復容器 images指令擁有-f/--filter選項以篩選映像檔清單- 新增
--force-rm以在建置失敗後清理 - 將 Remote API 中的 JSON 鍵(keys)標準化為 CamelCase
- docker run 若未指定標籤,現在會預設使用
latest - 增強 Linux 能力和裝置節點的安全性
0.11.1 (2014-05-07)
Registry
- 修復私有 registry 的推入與拉取功能
0.11.0 (2014-05-07)
自 0.10.0 以來的重要功能
- 掛載和處理程序標籤的 SELinux 支援
- 連結後的容器可透過主機名稱(hostname)存取
- 使用
--net旗標以進行進階網路設定,例如主機網路模式,讓容器可使用主機的網路介面 - 在 Remote API 新增 ping 端點,以便對您的 docker daemon 進行健康檢查
- Logs 現在可回傳選用的時間戳記
- Docker 現在可與支援 SHA-512 的 registry 搭配運作
- 支援多個 registry 端點以允許 registry 鏡像
0.10.0 (2014-04-08)
建置器
- 修復單行輸出多個訊息的問題,解決建置期間輸出破碎的問題
- 對於 ADD 建置指令,追蹤容器根目錄內的符號連結
- 修復 EXPOSE 快取問題
文件
- 在文件中新增
docker ps的新選項 - 在文件中新增
docker restart的選項 - 更新 daemon 文件與關於 --iptables 和 --ip-forward 的說明訊息
- 更新 apt-cacher-ng 文件範例
- 從文件中移除重複的 --mtu 說明
- 在文件中補上
docker images缺少的 -t 和 -v - 對 CLI 文件進行修復
- 更新 libcontainer 文件
- 更新文件中的映像檔說明,移除對 AUFS 和 LXC 的參照
- 更新文件中的 nodejs_web_app,使用新的 epel RPM 位址
- 修復關於容器安全性的外部連結
- 更新 Remote API 文件
- 在歷史記錄文件中新增映像檔大小
- 在 redis 範例中明確標註綁定至所有介面
- 在 1.10 remote api 文件中說明 DisableNetwork 旗標
- 說明
--lxc-conf僅限 lxc 使用 - 新增 chef 使用文件
- 為包含多個映像檔的情況新增
docker load範例 - 在文件中解釋
docker run -a的功能
貢獻
- 新增 DOCKER_LOGFILE 的變數至 sysvinit,並在開啟 logfile 時使用追加而非覆蓋
- 修正 init 指令碼 cgroup 掛載的變通方法,使其更接近 cgroupfs-mount 以確保正常運作
- 從 upstart 主機整合範例中移除 inotifywait 的變通作法,因為已不再需要
- 在 contrib 中新增 check-config 指令碼
- 修復 fish shell 的自動補完功能
Hack
- 清理 "make test" 的 "go test" 輸出,使其更易讀/檢視
- 在 hack/make/test 中排除更多「絕對未經單元測試的 Go 原始碼」目錄
- 建置時產生 md5 和 sha256 雜湊值,並透過 hack/release.sh 上傳
- 在 Ubuntu PPA 中包含貢獻的自動補完指令碼
- 新增 CLI 整合測試
- 調整 hack 指令碼以使其更簡單
Remote API
- 為 API 新增 TLS 驗證支援
- 將 git clone 從 daemon 移至 client
- 修復 docker cp 中的 content-type 偵測
- 將 API 分割為 2 個 go 套件
執行時期
- 支援 hairpin NAT,無須經過 Docker 伺服器
- devicemapper:移除不存在的裝置時立即成功
- devicemapper:改進 devicemapper 裝置處理(新增單一裝置鎖定、增加睡眠時間,並在睡眠期間解鎖)
- devicemapper:將 waitClose 中的逾時時間增加至 10 秒
- devicemapper:確保整潔地關閉 thin pool
- devicemapper:在 activateDeviceIfNeeded、deactivateDevice、setInitialized、deleteDevice 中傳遞 info 而非 hash
- devicemapper:避免 AB-BA 死結
- devicemapper:使關閉過程更好/更快
- 改進 mflag 中的字母排序
- 移除手動 http cookie 管理,改用 cookiejar
- 在 Darwin 上使用 BSD 原始模式,修復 nano、tmux 等應用程式
- 為客戶端新增 FreeBSD 支援
- 將 auth 套件合併至 registry
- 為
docker pull的 -t 新增棄用警告 - 移除錯誤發生時的 goroutine 外洩
- 更新 parseLxcInfo 以符合新的 lxc1.0 格式
- 修復 darwin 上的 attach 退出問題
- 改進棄用訊息
- 針對
docker pull重試擷取層級詮釋資料最多 5 次 - 僅對 execin 取消共享掛載命名空間
- 提交時合併現有設定
- 停用 daemon 啟動逾時
- 修復問題 #4681:停用網路功能時新增 loopback 介面
- 新增問題 #4681 的失敗測試案例
- 傳送 SIGTERM 給子處理程序,而非 SIGKILL
- 即使不在偵錯模式下,也在
docker info中顯示驅動程式和核心版本 - 始終為 libcontainer 符號連結 /dev/ptmx,修復主控台相關問題
- 修復因缺少 /etc/apparmor.d 而導致的問題
- 建立容器失敗時不再留下空的 cidFile
- 若尚未掛載,則自動掛載 cgroups
- 在搜尋測試中使用 mock
- 全面更新為雙短橫線(double-dash)格式
- 將 .dockerenv 解析移至 lxc 驅動程式
- 將容器內的所有綁定掛載移至命名空間內
- 不再為容器使用獨立的綁定掛載
- 始終為 libcontainer 符號連結 /dev/ptmx
- 其他驅動程式不再透過 pid 進行 kill
- 為 libcontainer 新增初步紀錄
- 在
docker ps中依埠號排序
- 將網路驅動程式移至執行階段頂層套件
- 為
docker rmi新增 --no-prune - 在
docker ps中新增退出後經過的時間
- graphdriver:新增建置標籤
- 防止分配已分配的埠號,並改進埠號分配
- 在
docker ps中新增對 --since/--before 的支援
- 清理容器停止流程
- 支援可設定的 DNS 搜尋網域
- 支援相對路徑的 WORKDIR 指令
- 為 docker save 新增 --output 旗標
- 移除設定合併中重複的 DNS 項目
- 新增 cpuset.cpus 至 cgroups 和原生驅動程式選項
- 移除 docker-ci
- 提升 btrfs 等級,btrfs 不再視為實驗性
- 為
docker load新增 --input 旗標 - 當現有的 bridge 與 IP 位址不符時回傳錯誤
- 解析行續接符號前先去除註解,避免將指令誤判為註解
- 修復 TestOnlyLoopbackExistsWhenUsingDisableNetworkOption,使其忽略 "DOWN" 介面
- 新增 cgroups 的 systemd 實作,使容器顯示為 systemd 單元
- 修復未指定儲存庫時的 commit 和 import 問題
- 將 /var/lib/docker 重新掛載為 --private 以解決擴充問題
- ping 遠端 registry 時使用環境變數中的代理伺服器
- 降低無害錯誤的錯誤層級
- 允許 --volumes-from 為單一檔案
- 修復 StdCopy 中的緩衝區擴充問題
- 無論 attach 或 stdin 狀態如何皆設定錯誤,修復 #3364
- 新增對 --env-file 的支援,以從檔案載入環境變數
- 符號連結 /etc/mtab 和 /proc/mounts
- 允許推入單一標籤
- 關閉 daemon 時整潔地關閉容器,並無限期等待容器關閉。這使得容器在 daemon 關閉時能透過 SIGTERM 正常關閉
- 啟動已在運行的容器時不再拋出錯誤
- 修復動態埠號分配限制
- 從 libcontainer 中移除 setupDev
- 在
docker version中新增 API 版本 - 接收訊號時回傳正確退出代碼,並使 SIGQUIT 在不清理的情況下退出
- 修復 --volumes-from 掛載失敗
- 允許非特權容器建立裝置節點
- 跳過登入測試,因其依賴外部託管服務
- 棄用
docker images --tree和docker images --viz - 棄用
docker insert - 包含 apparmor 的基礎抽象,修復 Ubuntu 14.04 上與 apparmor 相關的問題
- 在推入映像檔時透過 HTTP 收到 401 時新增具體錯誤訊息
- 修復絕對卷(volume)檢查
- 從設定中移除 volumes-from
- 將 DNS 選項移至 hostconfig
- 更新 libcontainer 的 apparmor 設定檔
- 新增
docker commit -run的棄用通知
0.9.1 (2014-03-24)
建置器
- 修復單行輸出多個訊息的問題,解決建置期間輸出破碎的問題
文件
- 修復關於容器安全性的外部連結
貢獻
- 修正 init 指令碼 cgroup 掛載的變通方法,使其更接近 cgroupfs-mount 以確保正常運作
- 新增 DOCKER_LOGFILE 的變數至 sysvinit,並在開啟 logfile 時使用追加而非覆蓋
Hack
- 建置時產生 md5 和 sha256 雜湊值,並透過 hack/release.sh 上傳
Remote API
- 修復
docker cp中的 content-type 偵測
執行時期
- 在 Darwin 上使用 BSD 原始模式,修復 nano、tmux 等應用程式
- 僅對 execin 取消共享掛載命名空間
- 針對
docker pull重試擷取層級詮釋資料最多 5 次 - 提交時合併現有設定
- 修復監控器(monitor)中的崩潰問題
- 停用 daemon 啟動逾時
- 修復問題 #4681:停用網路功能時新增 loopback 介面
- 新增問題 #4681 的失敗測試案例
- 傳送 SIGTERM 給子處理程序,而非 SIGKILL
- 即使不在偵錯模式下,也在
docker info中顯示驅動程式和核心版本 - 始終為 libcontainer 符號連結 /dev/ptmx,修復主控台相關問題
- 修復因缺少 /etc/apparmor.d 而導致的問題
- 建立容器失敗時不再留下空的 cidFile
- 改進棄用訊息
- 修復 darwin 上的 attach 退出問題
- devicemapper:改進 devicemapper 裝置處理(新增單一裝置鎖定、增加睡眠時間,並在睡眠期間解鎖)
- devicemapper:移除不存在的裝置時立即成功
- devicemapper:將 waitClose 中的逾時時間增加至 10 秒
- 移除錯誤發生時的 goroutine 外洩
- 更新 parseLxcInfo 以符合新的 lxc1.0 格式
0.9.0 (2014-03-10)
建置器
- 建置期間避免額外的掛載/卸載,修復建置期間相關的錯誤
- 為 docker build --rm 新增錯誤回傳,補上缺失的錯誤處理
- 禁止連鎖 onbuild、
onbuild from和onbuild maintainer觸發器 - 將
--rm設為docker build的預設值
文件
- 透過 https 下載 Mac 版 docker 客戶端二進位檔
- 更新安裝說明與描述的標題
- 新增升級 boot2docker 的說明
- 在 OS X 安裝文件中新增埠轉發範例
- 嘗試將儲存庫與 registry 脫鉤
- 更新文件以對
docker ps做更多解釋 - 更新 sshd 範例以使用 Dockerfile
- 重寫部分範例,包括 Python 範例
- 更新文件以包含容器生命週期說明
- 更新文件說明以討論 docs 分支
- 範例不再跳過憑證檢查並使用 HTTPS
- 恢復先前因核心頁面移除而遺失的記憶體與交換記憶體計算區段
- 解釋 DNS 警告以及在運行本地名稱伺服器的系統上如何解決它們
貢獻
- 為 mkimage-debootstrap 新增 Tanglu 支援
- 為 mkimage-debootstrap 新增 SteamOS 支援
Hack
- 執行整合測試時獲取套件覆蓋率
- 移除 Vagrantfile,將由 boot2docker 取代
- 修復 aufs 不可用系統上的測試
- 更新封裝說明並移除對 lxc 的依賴
Remote API
- 將 API 專屬程式碼移至 api 套件
- 修復 API 的標頭 content-type,使所有端點使用正確的類型
- 修復 registry 驗證並從 CmdPush 和 CmdPull 移除 ping 呼叫
- 為 JSON 串流函式新增換行符號
執行時期
- CLI 不再 ping registry,所有對 registry 的請求皆透過 daemon
- 檢查 lxc 驅動程式中 nil 回傳資訊,修復舊版 lxc 的崩潰問題
- Devicemapper:清理及修復卸載問題,修復導致卸載間歇性失敗的兩個問題
- Devicemapper:移除裝置時同時移除目錄,移除裝置後不再遺留目錄
- Devicemapper:啟用 skip_block_zeroing,不清除區塊以提升效能
- Devicemapper:修復關機時關於儲存池裝置移除的警告
- 確保 docker cp 串流正確關閉,修復
docker cp無法複製檔案的問題 - 停止將
tcp://預設為127.0.0.1:4243並移除 tcp 預設埠號 - 修復
docker commit中的--run,恢復其功能 - 修復自訂 bridge 相關選項,恢復其功能
- 將 PTY 綁定掛載為容器主控台,允許 tmux/screen 執行
- 新增純 Go libcontainer 函式庫,使其僅利用 Linux 核心特性即可執行容器
- 新增使用 libcontainer 的原生 exec 驅動程式,並將其設為預設
- 新增處理壓縮檔中擴充屬性的支援
- 設定容器 MTU 與主機 MTU 相同
- 為層級新增簡單的 sha256 總和檢查碼以加快
docker push
- 改進核心版本解析
- 允許旗標群組化(
docker run -it)
- 移除 chroot exec 驅動程式
- 修復除以零的錯誤以防崩潰
- 重寫
docker rmi - 修復 lxc 1.0.0 下的 docker info
- 修復 fedora 下 apparmor 的 tty 問題
- 不再總是附加環境變數,改以設定中的變數取代預設值
- 修復 goroutine 外洩
- 切換至 Go 1.2.1
- 修復唯一限制錯誤檢查
- 處理 Docker 資料目錄與 TMPDIR 的符號連結
- 為旗標新增棄用警告(-flag 已棄用,建議改用 --flag)
- 為原生執行驅動程式新增 apparmor 設定檔
- 將系統專屬程式碼從 archive 移至 pkg/system
- 修復
docker run -i -t的重複訊號問題 (issue #3336) - 為 lxc 回傳正確的處理程序 pid
- 新增 -G 選項以指定 unix socket 所屬群組
- 新增
-f旗標至docker rm以強制移除執行中的容器 - docker daemon 重啟時強制終止並重啟所有「幽靈」容器
- 新增
DOCKER_RAMDISK環境變數,讓 Docker 在根目錄位於 ramdisk 時也能運作
0.8.1 (2014-02-18)
建置器
- 建置期間避免額外的掛載/卸載,移除導致 devicemapper 問題的不必要操作
- 修復 ADD tar 壓縮檔的迴歸錯誤,停止 Docker 對透過 ADD 新增的本地 tar 檔進行解壓縮
- 為
docker build --rm新增錯誤回傳,補上遺漏的錯誤檢查以確保偵測並報告移除容器失敗的情況
文件
- 更新問題提報說明
- 警告勿對 Docker 儲存資料夾使用符號連結
- 以 IceWeasel 範例取代 Firefox 範例
- 使用 Dockerfile 重寫 PostgreSQL 範例並增加更多詳細資訊
- 改進 OS X 文件
Remote API
- 修復 1.7 以下版本損壞的 images API
- 為所有回傳 JSON 的 API 端點使用正確的編碼
- 將遠端 API 客戶端移至 api/
- 使用通用 socket 等待佇列 API 呼叫
執行時期
- 修復 bridge 和自訂 bridge 的自訂設定使用方式
- 重構 devicemapper 程式碼以避免許多掛載/卸載的競爭條件與失敗
- 移除兩個可能導致 Docker 在某些情況下崩潰的 panic
- CLI 客戶端不再 ping registry
- 啟用 devicemapper 的 skip_block_zeroing,停止 devicemapper 對整個區塊進行歸零
- 修復
docker commit中的 --run,使其將--run儲存於映像檔設定中 - 移除 devicemapper 裝置時移除目錄,清理遺留的掛載目錄
- 移除非特權容器的 NET_ADMIN 能力,無特權容器無法更改網路設定
- 確保
docker cp串流正確關閉 - 容器註冊期間避免額外的掛載/卸載,移除導致 devicemapper 問題的不必要操作
- 停止將 tcp:// 作為預設綁定於 127.0.0.1:4243 的位址並移除預設埠號
- 將 PTY 綁定掛載為容器主控台,允許 tmux 和 screen 在容器內執行
- 清理封存檔關閉流程,修復並改進封存處理
- 修復暫存目錄為符號連結系統上的引擎測試
- 新增 save 和 load 的測試方法
- 重啟容器時避免暫時卸載。修復 devicemapper 在重啟期間的競爭條件
- 從 GitHub 儲存庫建置時支援子模組
- 引號處理卷路徑以允許空格
- 修復遠端 tar ADD 行為,修復導致 Docker 解壓縮 tar 檔的迴歸錯誤
0.8.0 (2014-02-04)
自 0.7.0 以來的重要功能
映像檔與容器的移除速度大幅提升
從原始碼建置映像檔的速度顯著加快
Docker daemon 的啟動與停止速度大幅提升
透過串流處理檔案而非在記憶體中緩衝,以及修復記憶體外洩與次優分配,多種常見作業的記憶體佔用顯著降低
修復多個競爭條件,提升 Docker 在高併發負載下的穩定性。使 Docker 更穩定、不易崩潰,並降低記憶體佔用
所有封裝作業現在均基於 Go 語言的標準 tar 實作(隨 Docker 內建),封裝作業在不同主機發行版間的移植性更好,並解決了因 tar 各種發行版間不相容造成的數個問題
Docker 現在能更優雅地建立、移除和修改大量容器與映像檔,歸功於對系統資源更積極的釋放。例如儲存驅動程式 API 現在允許 Docker 對驅動程式建立的掛載進行參考計數。隨著網路與執行子系統的持續改動,測試這些區域成為重構重點。透過將這些子系統移至獨立套件,我們能測試、分析並監控這些套件的覆蓋率與品質
許多元件已分割為更小的子套件,每個套件皆有專屬測試套件。結果是程式碼測試更完整、更易讀且更易於更改
ADD 指令現在支援快取,避免在內容未變更時不必要地重複上傳相同的來源內容
新的 ONBUILD 指令會為您的映像檔新增一個「觸發」指令,在未來將此映像檔作為其他建置的基礎時執行
Docker 現在隨附一個實驗性的儲存驅動程式,使用 BTRFS 檔案系統進行寫入時複製(copy-on-write)
Docker 官方正式支援 Mac OS X
Docker daemon 支援 systemd socket 啟用
0.7.6 (2014-01-14)
建置器
- 不追蹤建置內容外的符號連結
執行時期
- 指定 ro 時重新掛載綁定掛載
- 使用 https 獲取 docker 版本
其他
- 內嵌 test.docker.io 指紋
- 在封裝文件中新增 ca-certificates
0.7.5 (2014-01-09)
建置器
- 停用建置壓縮。空間使用較多,但上傳速度大幅提升
- 修復特定路徑的 ADD 快取
- 不壓縮從 git 建置的封存檔
文件
- 修復 GROUP 新增範例中的錯誤
- 確保文件中包含 GPG 指紋
- 針對 DCO 的提交簽署提供更具體的設定建議
執行時期
- 修復拼寫錯誤的容器名稱
- 網路功能停用時不再新增主機名稱
- 依日期回傳快取中最近期的映像檔
- 回傳來自 docker wait 的所有錯誤
- 新增 Content-Type Header "application/json" 至 GET /version 和 /info 回應
其他
- 更新 DCO 至 1.1 版本
- 更新 Makefile 以使用 "docker:GIT_BRANCH" 作為產生的映像檔名稱
- 更新 Travis 以檢查新的 1.1 DCO 版本
0.7.4 (2014-01-07)
建置器
- 修復 . 開頭路徑的 ADD 快取問題
- 透過還原稀疏檔案 tar 選項來修復 devicemapper 上的 docker build
- 修復檔案快取問題並防止錯誤的快取命中
- 解組 CMD 和 ENTRYPOINT 時使用相同的錯誤處理
文件
- 簡化並精簡 Amazon Quickstart
- 安裝說明使用無字首的 Fedora 映像檔
- 更新 Docker 在 GCE 上的 mtu 旗標說明
- 新增 Ubuntu Saucy 至安裝說明
- 修復 master 分支上顯示錯誤版本警告而非最新版的問題
執行時期
- 僅在需要計算映像檔大小時獲取映像檔的 rootfs
- 正確處理 UDP 埠號解除對應
- 使 CopyFileWithTar 使用管線而非緩衝區,以節省 docker build 的記憶體
- 修復登入訊息,應顯示 pull 而非 push
- 移除 "SOURCE" 提示並提及 STDIN 以修復 "docker load" 說明
- 使空白 -H 選項預設與未傳送 -H 時相同
- 將 cgroups 公用程式提取至獨立子模組
其他
- 新增 Travis CI 設定以驗證 DCO 和 gofmt 需求
- 新增開發者原創性證書(DCO)文字
- 升級 VBox Guest Additions
- ping registry 伺服器時檢查獨立標頭
0.7.3 (2014-01-02)
建置器
- 基於新增內容的雜湊值,更新 ADD 以使用映像檔快取
- 為空的 Dockerfile 新增錯誤訊息
文件
- 修復指向 www.docker.io "Introduction" 的過時連結
- 更新文件使其隨螢幕大小調整寬度
- 新增使用原生二進位檔時需要安裝 LXC 的相關資訊
- 更新 Fedora 文件以釐清 docker 與 docker.io 的衝突
- 新增關於在多個 GCE 區域使用新
-mtu旗標的注意事項
- 新增 FrugalWare 安裝說明
- 新增更完整的
docker run範例
- 修復建立與啟動特權(Privileged)容器的 API 文件
- 在 "/containers/create" 中新增缺失的 "name" 參數文件
- 提及
lxc-checkconfig作為檢查某些必要核心配置的方法
- 使用 1.7 文件新增內容更新 1.8 API 文件
Hack
- 在封裝者文件中新增缺失的 libdevmapper 依賴項
- 更新最低 Go 需求為 Go 1.2+
- Vagrantfile 的許多小改進
- 新增編譯時自訂 dockerinit 搜尋位置的能力(僅供要求非標準位置的平台封裝者使用)
- 新增 coverprofile 產生報告
- 在我們的 Go 建置旗標中新增
-a,移除手動重新編譯標準函式庫的需求
- 更新 Dockerfile 使其更規範,並減少建置期間不必要的警告
- 修復多個
docker pull進度條顯示問題
- 將更多雜項套件遷移至 "pkg" 資料夾下
- 更新 TextMate 語法高亮,自動對命名為 "Dockerfile" 的檔案啟用
- 將語法高亮檔案重新組織至共同的 "contrib/syntax" 目錄下
- 更新 install.sh 指令碼 (https://get.docker.io/),確保 Ubuntu/Debian 安裝結束時,若 busybox 下載或執行失敗亦不會導致指令碼失敗
- 在 bash 自動補完中新增對容器名稱的支援
打包
- 為 Darwin (Mac OS X) 新增官方 Docker 客戶端二進位檔
- 移除 deb 套件中空的 "Vendor" 字串並新增 "License"
- 在 deb 套件中新增 "/etc/default/docker" 的存根版本
執行時期
- 更新層級應用方式,原地解壓 tars,處理 whiteouts 時避免檔案流動
- 修復 tar 處理中 mtime 比較的寬鬆度(因 GNU tar 和 Go tar 尚未支援次秒級 mtime 精度)
- 用純 Go 重新實作
docker top,使其運作更一致,甚至在 Docker-in-Docker 內也能運作(藉此移除某些lxc-ps版本中存在的 shell 注入漏洞)
- 更新
-H unix://,使其透過為缺失部分插入預設值,運作方式類似-H tcp://
- 修復更多關於 dockerinit 以及已刪除或已替換之 docker/dockerinit 檔案的邊角案例
- 更新容器名稱驗證以包含 '.'
- 修復將符號連結或非絕對路徑作為
-g的參數時無法如預期運作的問題
- 更新以處理 LXC 外部的外部掛載,修復許多微小的掛載怪異之處,並簡化未來的執行後端與其他功能
- 更新以在
docker images -tree中全面使用正確的方塊繪圖字元 - 將 MTU 設定從 LXC 設定移至直接使用 netlink
- 為外部 tar 調用新增
-S選項,以更有效地處理稀疏檔案
- 在 User-Agent 字串中新增 arch/os 資訊,特別是針對 registry 請求
- 為 Docker daemon 新增
-mtu選項以設定 MTU
- 修復
docker build在錯誤時以非零退出代碼退出
- 新增
DOCKER_HOST環境變數,以設定客戶端-H旗標,而無需每次調用都手動指定
0.7.2 (2013-12-16)
執行時期
- 建立容器時以標準正規表示式驗證名稱
- 將映像檔最大深度從 42 增加至 127
- 持續將 API 端點移至 job api
- 新增 -bip 旗標,允許透過 CIDR 指定動態 bridge IP
- 在某些 ipv6 未啟用的系統上允許建立 bridge
- 在 dockerinit 內部設定主機名稱與 IP 位址
- 在 dockerinit 內部移除能力(capabilities)
- 影像中存在符號連結時修復主機上的儲存卷
- 即使容器未在執行,只要有「任何」容器依賴該映像檔,即禁止刪除映像檔
- 更新 docker push 以使用新的進度顯示
- 使用 os.Lstat 以在檢查儲存卷時掛載 unix sockets
- 調整非活動使用者登入的處理方式
- 在 devicemapper 中為舊版核心新增缺失的定義
- 允許無容器驗證的取消標籤(untag)作業
- 將驗證設定(auth config)新增至 docker build
文件
- 新增更多關於 Docker 紀錄的資訊
- 新增 RHEL 文件
- 新增直接更改容器內執行之 CMD 的範例
- 更新 Arch 安裝文件
- 新增關於信任建置(Trusted Builds)的章節
- 新增網路文件頁面
其他
- 新增用於提供程式碼覆蓋率報告的 cover bundle
- 將整合測試分離至多個 bundles
- 使 Tianon 成為 hack 維護者
- 更新 mkimage-debootstrap,包含更多保持映像檔輕量的調整
- 使用 https 獲取安裝指令碼
- 隨著 Go 1.2 的釋出,移除 vendored dotcloud/tar
0.7.1 (2013-12-05)
文件
- 新增 @SvenDowideit 為文件維護者
- 新增連結(links)範例
- 新增關於 ambassador 模式的文件
- 新增 Google Cloud Platform 文件
- 新增 dockerfile 最佳實作
- 更新 RHEL 文件
- 更新 registry 文件
- 更新 Postgres 範例
- 更新 Ubuntu 安裝文件
- 改進遠端 api 文件
執行時期
- 將 hostconfig 新增至 docker inspect
- 實作
docker log -f以串流傳輸紀錄 - 新增環境變數以停用核心版本警告
- 新增 -format 至
docker inspect - 支援檔案的綁定掛載
- 修復 RHEL 上的 bridge 建立
- 修復映像檔大小計算
- 確保即使 bridge 已存在仍會呼叫 iptables
- 修復僅 stderr attach 的問題
- 銷毀容器時移除 init 層級
- 修復不同介面上的相同埠號綁定
docker build現在回傳正確退出代碼- 修復
docker port以顯示正確埠號 docker build現在會在客戶端檢查 Dockerfile 是否存在docker attach現在回傳正確退出代碼- 容器不存在時移除名稱項目
Registry
- 改進進度條,新增下載 ETA
- 同時進行的拉取作業現在會等待第一個完成,而非失敗
- 推入 registry 時僅標籤最頂層映像檔
- 修復離線映像檔傳輸問題
- 修復阻止在 registry 密碼中使用 ':' 的問題
其他
- 新增 pprof 處理常式以進行偵錯
- 建立 Makefile
- 使用現在包含修復的 stdlib tar
- 改進 make.sh 測試指令碼
- 處理 daemon 上的 SIGQUIT
- 測試期間停用詳細輸出
- 升級至 go1.2 以進行正式建置
- 改進單元測試
- 測試套件現在會執行所有測試,即使其中一個失敗
- 重構 Go 中的 C 程式碼 (Devmapper)
- 修復 OS X 編譯
0.7.0 (2013-11-25)
自 0.6.0 以來的重要功能
- 儲存驅動程式:可從 aufs、device-mapper 或 vfs 中選擇
- 標準 Linux 支援:Docker 現在可在未經修改的 Linux 核心及所有主要發行版上執行
- 連結(Links):透過將容器彼此連接來組成複雜的軟體堆疊
- 容器命名:透過賦予易記的名稱來組織您的容器
- 進階埠號重新導向:指定每個介面的埠號重新導向,或保持敏感埠號為私有
- 離線傳輸:在不遺失資訊的情況下推入與拉取映像檔至檔案系統
- 品質:數不盡的錯誤修復與微小的可用性改進。測試覆蓋率顯著提升
0.6.7 (2013-11-21)
執行時期
- 改進穩定性,修復部分競爭條件
- 刪除容器儲存卷時跳過已掛載的卷
- 修復層級大小計算:正確處理硬連結(hard links)
- 針對 docker cp CONTAINER:PATH 使用工作路徑
- 修復 tmp 目錄從未清理的問題
- 加速 docker ps
- 名稱衝突時更具說明性的錯誤訊息
- 修復名稱伺服器正規表示式
- 始終回傳完整 ID
- 修復容器重啟競爭條件
- 在 docker stop;docker start 時保留已發布的埠號
- 修復 Fedora 上的容器網路
- 正確地將 "any address" 表達至 iptables
- 重新連接到幽靈容器時修復網路設定
- 若映像檔由執行中的容器使用,則防止刪除
- 在圖形資料(graph)中對讀取作業進行鎖定
RemoteAPI
- 在 docker rmi 上回傳完整 ID
用戶端
- 在 images 中新增 -tree 選項
- 離線映像檔傳輸
- 用法錯誤時以狀態 2 退出,並將用法資訊顯示在 stderr
- 不將 SIGCHLD 轉發至容器
- 為 docker events -since 使用字串時間戳記
其他
- 更新至 go 1.2rc5
- 在 upstart 中新增 /etc/default/docker 支援
0.6.6 (2013-11-06)
執行時期
- 確保註冊時的容器名稱
- 修復 /etc/hosts 中的迴歸錯誤
- 在圖形資料(graph)中對寫入作業進行鎖定
- 檢查埠號是否有效
- 修復幽靈容器網路的重啟執行階段錯誤
- 增加更多顏色與動物以擴大產生的名稱池
- 修復 docker inspect 中的問題
- 脫離 apparmor 限制
- 使用檔案設定環境變數
- 防止 docker insert 抹除內容
- 防止 CreateBridgeIface 中的 DNS 伺服器衝突
- 在伺服器端驗證綁定掛載
- 在 docker build 中使用父映像檔設定
- 修復 /etc/hosts 中的迴歸錯誤
用戶端
- 新增 -P 旗標以發布所有已暴露的埠號
- 在 docker history 中新增 -notrunc 和 -q 旗標
- 修復 docker commit、tag 和 import 用法
- 在 docker search 中新增星級、信任建置和程式庫旗標
- 修復具有 tty 的 docker logs
RemoteAPI
- 使 /events API 立即傳送標頭
- docker top 不再分割最後一欄
- 將大小新增至歷史記錄
其他
- Contrib:桌面整合。Firefox 使用案例
- Dockerfile:升級至 go1.2rc3
0.6.5 (2013-10-29)
執行時期
- 容器現在可以命名
- 容器現在可以連結以進行服務發現
- 'run -a'、'start -a' 和 'attach' 可以將訊號轉發至容器,以與處理程序監控器達到更好的整合
- 重啟後自動啟動崩潰的容器
- 針對容器連結,將 IP、埠號與協定作為獨立環境變數暴露
- 允許將埠號發布至特定 IP
- 預設禁止容器間通訊
- 在 Container.Attach 中忽略 stdin 的 ErrClosedPipe
- 移除未使用的欄位 kernelVersion
- 修復在容器中掛載 /mnt 子目錄時的問題
- 修復移除映像檔時的取消標籤行為
- 在 dockerinit 內更改工作目錄時檢查 syscall.Chdir 的回傳值
用戶端
- 僅在需要時才將 stdin 傳遞給 hijack,以避免管線關閉錯誤
- 在指令列方法調用中減少反射使用
- 啟動容器「後」監控 tty 大小,而非啟動前
- 移除 log.Fatal 後無用的 os.Exit() 呼叫
Hack
- 新增初步的 init 指令碼函式庫與一個適用於 Debian 的更安全 Ubuntu 封裝指令碼
- 新增 -p 選項以使用 http_proxy 調用 debootstrap
- 使用 $sh_c 更新 install.sh,以獲取 modprobe 的 sudo/su 權限
- 更新所有 mkimage 指令碼以使用 --numeric-owner 作為 tar 參數
- 更新 hack/release.sh 流程以自動調用 hack/make.sh,並在建置與測試問題時中止
其他
- 文件:修復範例中 nc 的旗標
- 測試:移除警告並預防掛載問題
- 測試:更改 tty 調整大小邏輯以避免測試中的警告
- 建置器(Builder):修復詳細輸出模式下 docker build 的競爭條件
- Registry:修復 PushImageJSONIndex 方法的 content-type
- Contrib:改進產生 Debian 和 Arch linux 伺服器映像檔的輔助工具
0.6.4 (2013-10-16)
執行時期
- Start() 失敗時新增容器清理功能
- 在 utils/stdcopy.go 中新增更好的註解
- 為錯誤紀錄新增 utils.Errorf
- 為 docker run 新增 -rm,以在退出時移除容器
- 移除實際上並非錯誤的錯誤訊息
- 修復含有卷(volumes)的
docker rm - 修復 HTTP body 可能未關閉的某些錯誤情況
- 修復錯誤的 dockercfg 檔案導致的 panic
- 修復帶有 -i 的 attach 行為
- 在狀態中記錄終止時間
- 使用空字串,使 TempDir 自動使用作業系統的暫存目錄
- 確保關閉網路分配器
- 預設自動重啟容器
- 將 vendored kr/pty 升級至 commit 3b1f6487b
(syscall.O_NOCTTY) - lxc:允許容器內的 set_file_cap 能力
- 僅在 CLI 中分割 run -rm
- 分割 stdout stderr
- 始終為容器建立新工作階段
測試
- 新增彙總的 docker-ci 電子郵件報告
- 新增清理功能以移除殘留容器
- 新增夜間釋出版本至 docker-ci
- 在 auth.ResolveAuthConfig 周圍新增更多測試
- 移除測試中的少量錯誤
- TCP 與 UDP proxy 終止時捕捉 errClosing 錯誤
- 僅使用 TESTFLAGS='-run TestName' make.sh 執行特定測試
- 防止 docker-ci 測試已關閉的 PR
- 在測試中將 panic 取代為 log.Fatal
- 增加 TestRunDetach 逾時時間
文件
- 新增 Docker 基礎架構文件的初步草稿
- 在 CONTRIBUTING.md 中新增開發環境連結
- 在 Ubuntu 文件中新增
apt-get install curl - 新增關於出口限制的解釋
- 新增 .dockercfg 文件
- 移除關於 Gentoo 安裝筆記中關於 #1422 的變通作法
- 修復 -v 選項的說明文字
- 修復 Ping 端點文件
- 修復 ADD 指令文件中的參數名稱
- 修復變更紀錄中的反諷式拼字錯誤
- postgres 範例中的各種指令修正
- 記錄如何編輯與發布文件
postgresql_service.rst的細微更新
- 向貢獻者釐清 LGTM 流程
- 更正套件名稱中的錯誤
- 記錄
vagrant up實際執行的動作
- 改進文件搜尋結果
- 清理 API 1.5 文件中的空白
- 在 MAINTAINER 範例電子郵件中使用角括號
- 更新 archlinux.rst
- 更改文件為新樣式,包含版本切換器
- 格式化,新增關於多行 json 的資訊
- 改進 registry 和 index REST API 文件
- 移除已棄用的升級參照 docker-latest.tgz(自 0.5.3 以來未更新)
- 更新 Gentoo 安裝文件(現已進入 portage tree)
- 為貢獻者與維護者清理與重組文件與工具
- 將 protocoll 拼寫錯誤修正為 protocol
貢獻
- 新增 @honza 提供的 Dockerfiles vim 語法高亮
- 新增 mkimage-arch.sh
- 重組貢獻的補完指令碼以新增 zsh 補完
Hack
- 將 vagrant 使用者新增至 docker 群組
- 為 "docker push" 新增正確的 bash 補完
- 將 xz utils 新增為執行階段依賴
- 新增 #2010 中關於 hack 和 Dockerfile 更新的清理/重構部分
- 將 contrib/mkimage-centos.sh 加回(來自 #1621),以及對應的文件連結
- 新增來自 #1920 的多個 make.sh 小修復,使輸出更一致且對貢獻者更友善
- 將 @tianon 新增至 hack/MAINTAINERS
- 改進 VirtualBox 的網路效能
- 徹底翻新 install.sh 以供更多人使用,並盡可能使用官方安裝方法(apt repo, portage tree 等)
- 修復 contrib/mkimage-debian.sh 的 apt 快取預防問題
- 在 contrib 中新增 Dockerfile.tmLanguage
- 設定 FPM 將 /etc/init/docker.conf 作為設定檔
- 在 Vagrant VM 中啟用 SSH Agent 轉發
- 對 contrib/mkimage-debian.sh 進行多項微小調整/修復
其他
- 建置器:若 mergeConfig 回傳錯誤則中止建置,並修復重複的錯誤訊息
- 封裝:移除已棄用的封裝目錄
- Registry:登入時使用正確的驗證設定
- Registry:修復錯誤訊息,使其與正規表示式一致
0.6.3 (2013-09-23)
打包
- 為 ubuntu 套件安裝時新增 'docker' 群組
- 更新 tar vendor 依賴項
- 透過 HTTPS 下載 apt 金鑰
執行時期
- 僅在非綁定掛載的卷上複製並更改權限
- 允許使用多個 volumes-from
- 修復來自 STDIN 的 HTTP 匯入
文件
- 更新關於建置後提取 docker 二進位檔的章節
- 為新建置流程更新開發環境文件
- 從文件中移除 'base' 映像檔
其他
- 客戶端:修復 detach 問題
- Registry:更新正規表示式以符合 index
0.6.2 (2013-09-17)
執行時期
- 新增 domainname 支援
- 使用 path.Match 實作映像檔篩選
- 移除不必要的警告
- 移除 os/user 依賴
- 僅在設定存在時才掛載主機名稱檔案
- 在
docker login指令內處理訊號
- UID 與 GID 現在也應用於儲存卷
docker start在錯誤時設定錯誤代碼docker run設定與所啟動處理程序相同的錯誤代碼
建置器
- 新增 -rm 選項以移除中間容器
- 允許 RUN 指令使用多行
Registry
- 實作私有 registry 登入
- 修復推入問題
其他
- Hack:Vendored 所有依賴項
- Remote API:升級至 v1.5
- 封裝:將 hack/make.sh 分割為小型指令碼,每個「bundle」一個:test、binary、ubuntu 等
- 文件:一般改進
0.6.1 (2013-08-23)
Registry
- 在 API 呼叫中將 "meta" 標頭傳遞給 registry
打包
- 使用新建置工具搭配正確的 upstart 指令碼
- 使用 libffi-dev,不再從原始碼建置
- 移除重複的 mercurial 安裝指令
0.6.0 (2013-08-22)
執行時期
- 新增 lxc-conf 旗標以允許自訂 lxc 選項
- 新增設定工作目錄的選項
- 新增映像檔名稱至 LogEvent 測試
- 新增 -privileged 旗標及相關測試、文件與範例
- 為 /container/ 新增 websocket 支援
/attach/ws - 當 net.ipv4.ip_forwarding = 0 時新增警告
- 新增主機名稱至環境
- 在
docker version中新增最後穩定版本
- 修復並行拉取(parallel pull)中的競爭條件
- 修復 Graph ByParent() 以產生每個父映像檔的子映像檔清單
- 修復錯字:fmt.Sprint -> fmt.Sprintf
- 修復 docker build 中的微小 \n 錯誤
- 修復 "Inject dockerinit at /.dockerinit"
- 修復 #910。在 docker info 輸出中列印使用者名稱
- 為 dockerbuilder 使用 Go 1.1.2
- 在 channels 上使用 ranged for 迴圈
- 在 server.ImageDelete 中使用 utils.ParseRepositoryTag 代替 strings.Split(name, ":")
- 改進 CMD、ENTRYPOINT 與 attach 文件
- 改進 socket 錯誤的連接訊息
- 僅在需要時載入 authConfig 並修復無用的 WARNING
- 映像檔缺失時顯示所使用的標籤
- 建立儲存卷前套用 volumes-from
- 使 docker run 處理 SIGINT/SIGTERM
- 防止 .dockercfg 不可讀時崩潰
- 安裝指令碼應透過 https 而非 http 獲取
- API,問題 1471:使用群組進行 socket 權限管理
- 正確偵測 IPv4 轉發
- 將 /dev/shm 掛載為 tmpfs
- 將 get.docker.io 從 http 切換至 https
- 讓 userland proxy 處理容器綁定的流量
- 更新 Docker CLI 以指定 "Host" 標頭的值
- 變更網路範圍以避免與 EC2 DNS 衝突
- ping registry 時減少連接與讀取逾時時間
- 並行拉取
- 處理 ip route 顯示無遮罩 IP 位址的情況
- 允許無 CMD 的 ENTRYPOINT
- 解析 FQN 儲存庫名稱時始終將 localhost 視為網域名稱
- 重構 checksum
文件
- 新增 MongoDB 映像檔範例
- 新增建立與使用 docker 群組的說明
- 在文件範例與安裝中新增 sudo
- 新增 ufw 文件
- 新增關於 ps -a 的參照
- 新增關於 Docker 優於 LXC 之高階工具的資訊
- 修復 docker run -dns 文件中的錯字
- 修復 ubuntu 安裝指南中的錯字
- 修復關於新增 docker 群組的文件
- 更新預設 -H 文件
- 更新 readme 中關於建置的依賴項
- 更新 amazon.rst 以解釋在 ec2 上執行 Docker 無需 Vagrant
- 文件中的 PostgreSQL 服務範例
- 建議預設安裝 linux-headers
- 更改 twitter 帳號
- 釐清 Amazon EC2 安裝
- 'Base' 映像檔已棄用,文件中不應再參照
- 移動關於正式支援核心的注意事項
- 解決 Safari 中標誌被壓縮的問題
建置器
- 在 Dockerfile 中新增 USER 指令
- 新增 Buildfile 的 workdir 支援
- 新增 docker build 的 no cache 選項
- 修復 docker build 和 docker events 輸出
- 僅將已知指令視為建置步驟
- 確保建置內的 ENV 指令每次皆執行提交
- 禁止 docker build ADD 中的特定路徑
- 在建置用法中使用儲存庫名稱(及選擇性標籤)
- 確保 ADD 將建立的所有內容皆為 0755
Remote API
- 依最近建立日期排序映像檔
- 重構 registry 模組中的不透明請求
- 在 /events 中新增映像檔名稱
- 使用 mime 套件解析 Content-Type
- 650 http utils 與 user agent 欄位
Hack
- Bash 補完:限制指令至特定狀態的容器
- 將 docker 依賴項覆蓋率測試新增至 docker-ci
打包
- Docker-brew 0.5.2 支援與記憶體佔用降低
- 將新的 docker 依賴項新增至 docker-ci
- 還原 "docker.upstart: avoid spawning a
shprocess"
- Docker-brew 與 Docker 標準函式庫
- 使用 docker 發布 docker
- 修復 get.docker.io 產生的 upstart 指令碼
- 啟用文件產生 manpages 功能
- 還原 Vagrant 中綁定 daemon 至 0.0.0.0
Register
- 改進 auth push
- Registry 單元測試 + mock registry
Tests
- 改進 TestKillDifferentUser 以防止 buildbot 逾時
- 修復 TestBindMounts 中的錯字(runContainer 在無映像檔時呼叫)
- 改進 TestGetContainersTop 使其不依賴 sleep
- 放寬 lo 介面測試,允許 iface index != 1
- 將 registry 功能測試新增至 docker-ci
- 在 server 和 utils 中新增一些測試
其他
- Contrib:bash 補完指令碼
- 客戶端:新增 docker cp 指令與複製 API 端點,以將容器檔案/資料夾複製到主機
- 僅 attached 至 stdin 時,不從 stdout 讀取
0.5.3 (2013-08-13)
執行時期
- 使用 docker 群組進行 socket 權限管理
- 在 upstart 指令碼內 spawn shell
- 處理 ip route 顯示無遮罩 IP 位址的情況
- 新增主機名稱至環境
建置器
- 確保建置內的 ENV 指令每次皆執行提交
0.5.2 (2013-08-08)
- 建置器:禁止 docker build ADD 中的特定路徑
- 執行階段:更改網路範圍以避免與 EC2 DNS 衝突
- API:將 daemon 預設改為監聽 unix socket
0.5.1 (2013-07-30)
執行時期
- 在
docker top中新增ps參數 - 新增容器 ID 檔案支援 (類似 pidfile)
- 在預設環境中新增 container=lxc
- 使用
docker run -n與docker -d -b=none支援無網路容器
- Stdout/stderr 紀錄現在與 JSON 儲存於同一個檔案中
- 預設分配 /16 IP 範圍,並回退至 /24。嘗試 12 個範圍而非 3 個
- 將 .dockercfg 格式變更為 json 並支援多個驗證遠端
- 不覆蓋設定中的 volumes
- 修復 EXPOSE 覆蓋問題
API
- Docker 客戶端現在設定 useragent (RFC 2616)
- 新增 /events 端點
建置器
- ADD 指令現在理解 URL
- CmdAdd 與 CmdEnv 現在尊重 Dockerfile 設定的 ENV 變數
- 在 ADD 指令內以 755 而非 700 建立目錄
Hack
- 使用輔助工具簡化單元測試
- 改進 docker.upstart 事件
- 將覆蓋率測試新增至 docker-ci
0.5.0 (2013-07-17)
執行時期
- 使用 'docker top' 列出容器內執行的所有處理程序
- 使用 'docker run -v' 可將主機目錄掛載為儲存卷
- 容器可暴露公共 UDP 埠號 (例如 '-p 123/udp')
- 可選擇指定精確的公共埠號 (例如 '-p 80:4500')
- 'docker login' 支援額外選項
- 提交映像檔時不儲存容器的主機名稱
Registry
- 受 Go 封裝慣例啟發的新映像檔命名配置,允許任意組合 registry
- 修復將映像檔上傳至私有 registry 時的問題
建置器
- ENTRYPOINT 指令為容器設定預設二進位進入點
- VOLUME 指令將容器的一部分標記為持久化資料
- 'docker build' 預設顯示建置的完整輸出
0.4.8 (2013-07-01)
- 建置器:新的建置操作 ENTRYPOINT 新增可執行的進入點至容器。- 執行階段:修復導致 'docker run -d' 不再列印容器 ID 的錯誤
- 測試:修復測試套件中的問題
0.4.7 (2013-06-28)
Remote API
- 下載與上傳大型檔案時,進度條更新速度更快
- 修復選用 unix socket 傳輸中的錯誤
執行時期
- 改進核心版本偵測
- 使用 'docker run -b' 可將主機目錄掛載為儲存卷
- 修復僅 attach 至 stdin 時的問題
- 使用 'tar --numeric-owner' 以避免多個主機間的 uid 不匹配
Hack
- 改進測試套件與開發環境
- 移除單元測試對 'os/user' 的依賴
其他
- Registry:推入/拉取自訂 registry 更簡單
- 文件:新增術語章節
0.4.6 (2013-06-22)
- 執行階段:修復導致建立空映像檔(與儲存卷)時崩潰的錯誤
0.4.5 (2013-06-21)
- 建置器:'docker build git://URL' 可獲取並建置遠端 git 儲存庫
- 執行階段:'docker ps -s' 可選列印容器大小
- 測試:改進並簡化
- 執行階段:修復 0.4.3 引入的迴歸錯誤,導致 logs 指令失敗
- 建置器:修復使用 ADD 搭配單一一般檔案時的迴歸錯誤
0.4.4 (2013-06-19)
- 建置器:修復 0.4.3 引入的迴歸錯誤,導致新客戶端上的建置失敗
0.4.3 (2013-06-19)
建置器
- 本地檔案的 ADD 將自動偵測 tar 封存檔並解壓縮
- ADD 改進:使用 tar 進行複製 + 自動解壓縮本地封存檔
- ADD 使用 tar/untar 進行複製而非呼叫 'cp -ar'
- 修復 ADD 的行為,使其(大部分)向後相容、可預測且有完整文件
- 修復 ADD 若為第一個指令時導致建置失敗的錯誤
- 'docker build' 的輸出更美觀
執行時期
- 移除 bsdtar 依賴
- 新增 unix socket 與多個 -H 支援
- 防止移除執行中的容器
- 使用 go1.1 cookiejar
- 修復從執行中 TTY 容器 detach 的問題
- 禁止對單一映像檔/儲存庫進行並行推入/拉取,修復
#311 - 修復 Run 指令在 attach 時的競爭條件
用戶端
- 拉取時進度條顯示人類可讀大小
- 修復 docker version 的 git commit 輸出
API
- 在 History API 呼叫上傳送所有標籤
- 在 history 指令中新增標籤查詢,修復 #882
文件
- 修復 irc bouncer 範例中遺失的指令
0.4.2 (2013-06-17)
- 封裝:增加版本號以解決 Ubuntu 錯誤
0.4.1 (2013-06-17)
Remote Api
- 新增旗標以啟用跨網域請求
- 在 docker ps 和 docker images 中新增映像檔與容器大小
執行時期
- 使用 'docker -d -dns' 設定主機層級的 dns 設定
- 偵測故障的 DNS 設定並以公共預設值取代
- 允許 docker run
: - 您現在可以指定公共埠號 (例如: -p 80:4500)
- 改進映像檔移除以回收未引用的父層級
用戶端
- 允許 inspect 中有多個參數
- 在
docker run的 hijack 之前列印容器 id
Registry
- 對儲存庫名稱新增正規表示式檢查
- 將驗證移至客戶端
- 移除 pull 時的登入檢查
其他
- Vagrantfile:在 vagrantfile 的 port_forward 中新增 rest api 埠號
- 升級至 Go 1.1
- 建置器:Dockerfile 最後一行若未以 \n 結尾,不應忽略
0.4.0 (2013-06-03)
建置器
- 引入建置器(Builder)
- 'docker build' 可從包含 Dockerfile 的來源儲存庫中,逐層建置容器
Remote API
- 引入 Remote API
- 使用簡單的 HTTP/json API 以程式方式控制 Docker
執行時期
- 各類可靠性與可用性改進
0.3.4 (2013-05-30)
建置器
- 'docker build' 可從包含 Dockerfile 的來源儲存庫中,逐層建置容器
- 'docker build -t FOO' 將標籤 FOO 套用至新建置的容器
執行時期
- 互動式 TTY 可正確處理視窗大小調整
- 修復層級間設定合併的方式
Remote API
- 在 'docker run' 上分割 stdout 與 stderr
- 可選擇監聽不同的 IP 與埠號(風險自負)
文件
- 改進安裝說明
0.3.3 (2013-05-23)
- Registry:修復推入迴歸錯誤
- 各類錯誤修復
0.3.2 (2013-05-09)
Registry
- 改進 checksum 流程
- 推入時使用大小資訊以獲取良好的進度條
- 若實際封存檔存在則使用之,以加快推入速度
- 修復推入時錯誤 400
執行時期
- 提交時儲存實際封存檔
0.3.1 (2013-05-08)
建置器
- 在 docker builder 內實作自動執行能力
- 為 docker builder 新增快取
- 以原生 API 作為頂層指令新增對 docker builder 的支援
- 在 docker builder 內實作 ENV
- 建立前檢查指令是否存在,並針對該情況新增單元測試
- 使用任何空格而非 tab
執行時期
- 在偵錯資訊中新增 go 版本
- 核心版本 - 若 flavor 為空則不顯示短橫線
Registry
- 新增 docker search 頂層指令以搜尋儲存庫
- 修復特定標籤官方映像檔的拉取
- 修復以不同使用者登入並嘗試推入時的問題
- 改進 checksum - 非同步計算
映像
- 將映像檔圖形輸出為 dot (graphviz)
- 修復 ByParent 函式
文件
- 新的簡介與高階概覽
- 新增 docker builder 的文件
- Docker 文件 CSS 修復,使 REST API 文件呈現更好
- 修復 CouchDB 範例頁面標頭錯誤
- 修復 README 格式
- 更新 www.docker.io 網站
其他
- 網站:新的高階概覽
- Makefile:交換 "go get" 為 "go get -d",特別是針對 go1.1rc 的編譯
- 封裝:封裝 ubuntu;問題 #510:使用 golang-stable PPA 套件來建置 docker
0.3.0 (2013-05-06)
執行時期
- 修復指令存在性檢查
- strings.Split 在未匹配時可能回傳空字串
- 修復若 cgroup 記憶體缺失時的索引超出範圍崩潰問題
文件
- 各類改進
- 新範例:在 2 個 couchdb 資料庫間共用資料
其他
- Vagrant:在 /etc/apt 中僅使用一行 deb
- Registry:實作新 registry
0.2.2 (2013-05-03)
- 支援資料卷(data volumes)('docker run -v=PATH')
- 共用容器間的資料卷 ('docker run -volumes-from')
- 改進文件
- 升級至 Go 1.0.3
- 為貢獻者進行開發環境的各類升級
0.2.1 (2013-05-01)
- 'docker commit -run' 將層級與預設執行階段選項(指令、埠號等)綁定
- 改進 Vagrant 上的安裝流程
- 新 Dockerfile 操作: "maintainer"
- 新 Dockerfile 操作: "expose"
- 新 Dockerfile 操作: "cmd"
- 用於建置 Debian 基礎層級的 Contrib 指令碼
- 'docker -d -r': daemon 啟動時重啟崩潰的容器
- 執行階段:改進測試覆蓋率
0.2.0 (2013-04-23)
- 執行階段:幽靈容器可被終止與等待
- 文件:更新安裝說明
- 封裝:修復 Vagrantfile
- 開發:自動化釋出二進位檔與 ubuntu 套件
- 新增變更紀錄
- 各類錯誤修復
0.1.8 (2013-04-22)
- 動態偵測 cgroup 能力
- 針對 <3.8 核心發布穩定性警告
- 'docker push' 緩衝至磁碟而非記憶體
- 修復已移除檔案的 'docker diff'
- 修復幽靈容器的 'docker stop'
- 修復 pidfile 處理
- 各類錯誤修復與穩定性改進
0.1.7 (2013-04-18)
- 容器埠號可在 localhost 使用
- 'docker ps' 顯示已分配的 TCP 埠號
- 貢獻者可執行 'make hack' 以啟動持續整合 VM
- 精簡 ubuntu 封裝與上傳
- 各類錯誤修復與穩定性改進
0.1.6 (2013-04-17)
- 以 'docker commit -author' 記錄映像檔作者
0.1.5 (2013-04-17)
- 停用獨立模式
- 以 'docker -d -dns' 使用自訂 DNS 解析器
- 偵測幽靈容器
- 改進對缺失系統能力的診斷
- 允許編譯時停用記憶體限制
- 新增 debian 封裝
- 文件:Arch Linux 安裝
- 文件:在 docker 上執行 Redis
- 修復 lxc 0.9 相容性
- 自動載入 aufs 模組
- 各類錯誤修復與穩定性改進
0.1.4 (2013-04-09)
- TTY 模擬的完整支援
- 使用逸出序列
C-p C-q從 TTY 工作階段 detach - 各類錯誤修復與穩定性改進
- 介面微小改進
- 自動建立我們自己的 bridge 介面 'docker0'
0.1.3 (2013-04-04)
- 使用 '-p :PORT' 選擇 TCP 前端埠號
- 層級格式已版本化
- 處理程序管理器的重大可靠性改進
- 各類錯誤修復與穩定性改進
0.1.2 (2013-04-03)
- 使用 'docker run -h' 設定容器主機名稱
- 使用 'docker run -a [stdin[,stdout[,stderr]]]' 進行選擇性 attach
- 各類錯誤修復與穩定性改進
- 介面調整
- 推入/拉取時的進度條
- 預設使用 XZ 壓縮
- 使 IP 分配器改為延遲分配
0.1.1 (2013-03-31)
- 顯示簡短 ID 以利使用
- 穩定處理程序管理
- 層級可包含提交訊息
- 簡化的 'docker attach'
- 修復重新 attach 的支援
- 各類錯誤修復與穩定性改進
- 執行時自動下載
- 推入時自動登入
- 強化文件
0.1.0 (2013-03-23)
初步公開發布
- 實作 registry 以進行推入/拉取映像檔
- TCP 埠號分配
- 修復 Linux 上的 termcaps
- 新增文件
- 使用 Vagrantfile 新增 Vagrant 支援
- 新增單元測試
- 新增儲存庫/標籤以簡化映像檔管理
- 改進層級實作