產品的各種環境使用了許多 CentOS 虛擬機,預設 root 目錄空間是50 G,隨著使用時間越來越長,空間會變得不夠用。
一直採用的方法就是清除無用的映像和 Docker 日誌,伺服器就一直處於可用的狀態。直到連清理都沒用的時候,才想起來要需要找其他的方法。
當沒有逼到絕境的時候,我們會習慣性依賴自己熟悉的方法和工具,可能不高效,但能解決問題,這種又不是不能用的思維害人不淺,會讓人待在舒適圈不願意出來。
上面所說的其他的方法其實也很簡單,稍微查查資料就能獲得,就是限制 Docker 日誌大小和將 Docker 資料目錄切換到外部儲存。
1、編輯Docker 的設定檔 /etc/docker/daemon.json,如果該檔案不存在,就新建一個:
sudo vi /etc/docker/daemon.json
2、在在該檔案中加入以下內容,以限制單一日誌檔案的大小為100MB ,並保留最近5個日誌檔案。這裡我們使用 max-size 和 max-file 參數來控制日誌的大小和數量:
{ "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "5" } }
3、重新啟動 Docker 服務讓設定生效:
sudo systemctl restart docker
在 CentOS 中,Docker 預設的目錄為 /var/lib/docker ,可以使用 Docker 設定檔中的 data-root 選項,進行 Dcoker 資料目錄的設置,具體步驟如下:
1、在 /etc/docker/daemon.json 設定檔中新增 data-root 選項:
{ "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "5" } "data-root": "/home/docker" }
2、停用 Docker。
sudo systemctl stop docker
3、將 Docker 預設目錄中的內容拷貝到新的目錄中:
sudo rsync -aqxP /var/lib/docker/ /home/docker/
4、修改預設目錄的名稱為bak:
mv /var/lib/docker /var/lib/docker.bak
這樣做的好處是可以對原始資料進行備份,等運行穩定了再進行刪除,另外就是防止配置沒有生效導致還是讀取的原始目錄。
5、啟用 Dcoker:
sudo systemctl start docker
在上面第三步驟中使用了 rsync 這個指令來進行內容的同步,這個指令的意思是使用 rsync 工具將本地電腦中 /var/ lib/docker/ 目錄下的所有檔案和子目錄同步到另一個本機電腦中的 /home/docker/
在此之前,進行檔案或目錄的操作使用 cp 和 scp 比較多,這次查資料時知道了rsync 這個指令工具,便繼續學習了下和 cp 、 scp 。
總之, rsync 是更強大、更有效率的檔案複製和同步工具,如果需要在本機或遠端機器之間進行檔案同步、備份和復原等操作,建議使用rsync。而 cp 和 scp 則適用於簡單的本機檔案複製和遠端檔案傳輸。
透過這次日誌限制和目錄切換的學習,有兩點思考:
1、很多時候,更好的方式就在離你不遠的地方,就看你願不願意往前邁一步去探尋一下,也就是說不能將就,不要有「又不是不能用」的思維,做產品、學技能都是一樣。
2、工作之後的很多技能的學習都是在不斷解決問題中學會的,這樣會讓你慢慢變得很有經驗,但不繫統,即便某個領域感覺已經非常熟悉了,我覺得也有必要再看看書進行系統化學習,一定能掃出許多盲點。
以上是Docker日誌大小限制和切換儲存目錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!