Docker Image(映像) 的特性是輕量且獨立,其中包含了運行應用程式所需的代碼、工具、資料庫和設置等等。Docker Image(映像) 不但方便移植,且封裝應用程式,還有他們互相依賴的關係,我們可以在不同的環境中部署和運行 Docker Image(映像) ,對我來說最大的優點是,不用擔心環境差異或配置的問題。
Docker Image(映像) 是不可變的,一旦構建完成,就不能更改。若我們想要更改時,就需要建一個新的 Image(映像),
這個特性的 優點
當然也有 缺點
Docker Image(映像) 是項千層蛋糕一樣一層一層的建立的。每層都包含了文件系統的一部分,以及對上一層分層的修改。
優點
缺點
也因為層層相疊的影響,所以如果有層存在安全漏洞,那後面相依的層都會有相同的安全問題
總結 Docker Image(映像) 的主要優勢包括 易於分發 、 跨平台 、 快速部署 和 版本控制 。
docker images
這邊可以看到我前面幾天建立的 Image(映像)
docker pull <映像名稱:版本>
docker rmi <映像ID或名稱>
📍 rmi
就是 remove image 的縮寫
docker build -t <映像名稱:版本> <Dockerfile路徑>
📍 這邊 -t
是 tag 的意思
📍 Dockerfile 正常都會位於當前目錄,所以若是當前目錄我們可以寫成
docker build -t <映像名稱:版本> .
.
就代表當前目錄 ; 需要特別寫路徑,則是因為 Dockerfile 不在當前目錄
docker push <映像名稱:版本>
這邊的話不特別寫要推到哪個註冊表,就是預設推到 Docker Hub 註冊表
如果有其他註冊表如: Google Container Registry(GCR)或 Amazon Elastic Container Registry(ECR)那就可以寫成
docker push <目標註冊表URL>/<圖片名稱:版本>
docker inspect <映像名稱或ID>
docker inspect 呈現的方式為 JSON 格式,docker inspect 可以用在容器也可以用在映像,所有跟這個容器或是映像有關的資訊,都會在這裡記錄。
(上面圖片只先擷取一部份,實際上有更多資訊喔!)
我已經瞭解了 Docker Image(映像) 這麼多事,但最重要的事,我要怎麼生成屬於我的 Docker Image(映像) 呢?
我們要建立 Docker Image(映像) 要先建一個名為 Dockerfile 檔案。Dockerfile 包含了一系列的指令,用於定義如何建立一個鏡像。其中包括選擇基礎鏡像、安裝相依軟件、設置環境變量等。
所以明天我們就要來了解一下 Dockerfile 的關鍵字,以幫助後續我們要撰寫時,能更快上手!