本篇文章是一個技術探討文,探討 Docker 是如何使用硬碟空間以及當維運人員發現空間不足時應該要如何清理系統上的空間。
Docker 的便利使用方式使得開發人員可以非常簡的透過的 Container 的概念來運行各式各樣的應用程式,這中間牽扯包含 Image 的建置,抓取以及透過其產生出一個運行的 Container。
隨者時間愈用愈久,系統內可用的空間也會愈來愈少,這時候可以透過 docker system df 來觀看一下目前系統上的空間資訊,主要包含下列四種類型,而每個類型也會包含目前使用量以及可以回收的量有多少
1. Images
2. Containers
3. Local Volumes
4. Build Cache(只有 docker 18.09 後使用 buildkit 才會有)
當 Contaienr 被創建時, /var/lib/docker 底下會有很多檔案以及資料夾都被創建出來,譬如
- /var/lib/docker/containers/ID (資料夾):如果 container 使用的是預設的 logging driver,則 log 檔案都會以 JSON 的格式存放於這個資料夾底下。
所以要注意,當 contaienr 有太多 log 時,其會透過這個方式影響節點檔案系統的容量
- /var/lid/docker/overlay2 (資料夾): 這邊包含了 containers 本身的 read-write layer 的檔案,大部分 Linux 發行版預設都會使用 overlay2 來管理。此外 contaienr 內如果有存放任何額外檔案於系統中,實際上都會放這節點上的這個資料夾內。
接下來作者透過一個實際的範例,讓一個全新的 contaienr 內透過 dd 指令來產生一些檔案,並且觀察上述資料夾的變化以及 docker system df 的結果,最後介紹 docker prune 以及 docker rm 針對 contaienr 的處理。
關於 image 的部分,除了常規使用的 Image 外,還有
1. Dangling images: 不再被參考使用的 image,譬如 ID/Tag 都是 None 的
這邊可以透過 docker image ls -f dangling=true 的指令
文章後半部分還有介紹 docker volume 以及 build cache 的部分,這篇文章非常推薦大家閱讀,除了基本使用外還會介紹底層 docker 實際上用到的資料夾,有了這些概念未來對於如何清除 docker 環境就會更有概念,知道要刪除哪些資料夾以及為什麼要刪除。
https://betterprogramming.pub/docker-tips-clean-up-your-local-machine-35f370a01a78
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「docker image指令」的推薦目錄:
- 關於docker image指令 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
- 關於docker image指令 在 OSSLab Geek Lab Facebook 的最佳貼文
- 關於docker image指令 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
- 關於docker image指令 在 コバにゃんチャンネル Youtube 的最佳解答
- 關於docker image指令 在 大象中醫 Youtube 的精選貼文
- 關於docker image指令 在 大象中醫 Youtube 的精選貼文
- 關於docker image指令 在 [Docker] Docker 指令小抄 的評價
- 關於docker image指令 在 twtrubiks/docker-tutorial: Docker 基本教學 - GitHub 的評價
- 關於docker image指令 在 實作Dockerfile + flask 教學(附GitHub完整程式) | Max行銷誌 的評價
- 關於docker image指令 在 [心得] 圖解教學一定要學的Docker 10大指令- soft_job 的評價
docker image指令 在 OSSLab Geek Lab Facebook 的最佳貼文
在Apple M1測試 Docker 安裝 開源ERP odoo心得
第一先裝了這個 M1 docker 預覽版
https://docs.docker.com/docker-for-mac/apple-m1/
裝好後照軟體下指令
就先裝好了 Docker Developer Preview for M1
參考 https://hub.docker.com/_/odoo
安裝odoo 14 docker
docker pull odoo --platform linux/amd64
(正常x86不用加 --platform linux/amd64)
docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:10
docker run -p 8069:8069 --name odoo --link db:db -t odoo
打開本機browser 8069 就可以跑odoo了
說真的 docker團隊還願意讓docker 從 HyperKit 換到macOS Big Sur的API Framework Virtualization.
所以可以跑x86 image 容器.但M1都有不少效能折損了
假設換成raspberry pi開發板,就只能限定用arm image(這樣限制不少)
所以必備一台x86 小電腦應用於docker 是很有用的.
https://osslab.tv/shop/acute_angle_mini_pc/
docker image指令 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
今天這篇文章是作者工作多年來,對於 Dockerfile 的一些想法與學習到的經驗,主要內容是講述到底如何最佳化 Dockerfile 的內容,實作上有哪些底可以參考與注意
1. 利用 Cache 的概念來加速建置的時間,最明顯的範例就是 RUN 這個指令,很常看到大家會透過一次 RUN 指令來安裝全部使用的套件,而非每個指令單獨一個 RUN,後者會產生眾多的的 Layer 數量
2. 沒有使用到的套件就不需要安裝,盡量保持精準原則,只安裝必要的相依性套件。這過這些階段可以節省一些 Image 大小,對於未來下載與部署都能夠有一些速度上的提升
3. 採用官方的 image 作為 base image,這部分的安全性會更佳保證,同時內容也會有專門團隊維護。此外 tag 部份也要注意不要使用 latest,最好能夠針對需求去固定版本,以免上游更新後,重新建置的 image 產生出不同的執行結果,這時候除錯也很麻煩
4. 採用 Multi-stage 的方式來建置你的環境,最常見的範例就是將編譯環境與執行環境分開。第一個 Stage 先準備建置環境,安裝相關的工具最後編譯出執行檔案,接者把該檔案複製到第二個 Stage 去單純執行即可
除了這些外,也有些滿常見的概念譬如,能的話盡量透過 USER 去指定使用者,而不是採用 root 的方式直接碾壓過去。
至於要不要使用 Alpine ,這部分見仁見智,畢竟 Alpine 某些版本會有些問題,特別是 Kubernetes 內可能會有 DNS 查詢的問題
我個人是非常討厭精簡化的容器,因為當發生問題想要進去看的時候,連一些工具都沒有,有的連 shell 都沒有,完全不給人除錯用
https://blog.bitsrc.io/best-practices-for-writing-a-dockerfile-68893706c3
docker image指令 在 コバにゃんチャンネル Youtube 的最佳解答
docker image指令 在 大象中醫 Youtube 的精選貼文
docker image指令 在 大象中醫 Youtube 的精選貼文
docker image指令 在 twtrubiks/docker-tutorial: Docker 基本教學 - GitHub 的推薦與評價
指令 介紹. 接著介紹一些Docker 的指令,. Docker 的指令真的很多,這裡就介紹我比較常用的或是實用的指令. 查看目前images. docker images. 建立image. ... <看更多>
docker image指令 在 實作Dockerfile + flask 教學(附GitHub完整程式) | Max行銷誌 的推薦與評價
$ docker image build -t dockerfile_test . 指令參數講解: docker build -t {mage_name} {current_folder}. ·Step 3 透過 ... ... <看更多>
docker image指令 在 [Docker] Docker 指令小抄 的推薦與評價
0abb 為Image 的IMAGE ID , 在使用docker images 可以看到; 使用 -f 參數,可以連Container 一起砍掉. 列出指令的詳細用法docker build --help ... ... <看更多>