6.1 當我退出容器(使用 exit)後,容器內的變更會遺失嗎?
- 不會。當使用 exit 或 docker stop 停止容器時,容器中的所有變更仍然保存在容器中,只是容器暫停運行。只有當你使用 docker rm 刪除容器時,容器中的變更才會被清除。
6.2 Docker 映像和容器是否是跨平台的?
- Docker 映像是跨平台的,可以在不同的操作系統(例如 Windows 和 Linux)上使用同樣的映像(如 CUDA 11.8.0)。不過,Windows 上的 Docker 需要切換到 Linux 容器模式,並需要安裝相應的驅動。容器則基於操作系統的核心,因此 Linux 容器可在 Linux 系統上跨平台運行,但 Windows 和 Linux 核心之間不具備原生跨平台性。
6.3 每次從映像生成新容器後,容器是否會永久佔用硬碟空間?
- 是的,每次執行 docker run 生成新容器,該容器會佔用硬碟空間,即使容器停止後,Docker 仍會保存該容器的數據。你可以使用 docker container prune 刪除已停止的容器來釋放空間,或在生成容器時加上 –rm 參數以自動刪除停止的容器。
6.4 如何將自製的映像傳送到其他電腦使用?
6.5 從映像生成的新容器是否會直接占用原始映像的硬碟大小?
- 不會。新容器剛生成時幾乎不會佔用額外空間,因為 Docker 會共用映像的基礎層。隨著容器中新增或修改的數據量增大,硬碟佔用才會增加,但不會重複佔用基礎映像的大小。
6.6 如果根據一個映像檔(如 CUDA 11.8.0)生成的 v1 容器需要再新增項目生成 v2,如何保留 v1 和 v2?
- 可以先將 v1 容器保存為映像,然後基於此映像創建 v2 容器並進行修改,最後保存為 v2 映像。具體步驟是使用 docker commit 生成 v1 映像,基於 v1 映像生成 v2 容器,再使用 docker commit 保存為 v2 映像。
6.7 若基礎映像損壞,是否會影響衍生的映像和容器?
- 是的,基礎映像損壞可能導致依賴於它的衍生映像和容器無法正常啟動。預防措施包括定期備份映像和檢查映像完整性。