Docker 是一個容器化的解決方案,可以將應用程序和它所依賴的庫、環境通過容器的方式打包起來,并且運行在不同的系統環境中。在 Docker 中,內容信任機制被用來保證該應用程序的鏡像在分發和運行時的可驗證性和可信任性。
Docker 的內容信任機制是基于數字簽名的。每一個 Docker 鏡像都會被分配一個唯一的 SHA256 標識符,它是由 Docker 鏡像中包含的元數據及其內容計算出的。
Docker 提供了一個默認的倉庫 registry 和一個公共倉庫 Docker Hub,用戶可以在其中上傳和下載鏡像。為了確保下載到的鏡像是可信任的,Docker 官方團隊提供了 Docker Notary 服務,用于簽名和驗證鏡像。用戶可以使用 Docker Notary 命令行工具對其上傳到 Docker Hub 上的鏡像進行簽名和校驗操作。
$ docker trust sign your-image Password: Signing and pushing trust data for local image your-image: latest, may overwrite remote trust data Enter passphrase for new root keys: Repeat passphrase for new root keys:
通過以上命令,Docker 會引導用戶設置新的根密鑰,完成鏡像的簽名工作。同時,這個簽名會上傳到 Docker Hub 的一個名為 Notary Server 的服務器上,可以被其他人所信任和驗證。任何想要驗證 this-image 鏡像的人都可以運行如下命令:
$ docker trust verify your-image:latest
Docker 會校驗該鏡像的簽名是否與 Notary Server 上的匹配,驗證通過后則說明該鏡像經過了簽名,并且是可信任的。
通過這種方式,Docker 的內容信任機制為用戶提供了安全可信的 Docker 鏡像,保障了 Docker 容器在不同機器之間的可移植性和一致性。