Docker日志大小限制和切換存儲目錄
產品的各種環境使用了很多 CentOS? 虛擬機,默認情況下 root 目錄空間是 50 G,隨著使用時間越來越長,空間會變得不夠用。
一直采用的方法就是清除無用的鏡像和 Docker 日志,服務器就一直處于可用的狀態。直到連清理都沒用的時候,才想起來要要需找其他的方法。
當沒有逼到絕境的時候,我們會習慣性依賴自己熟悉的方法和工具,可能不高效,但能解決問題,這種又不是不能用的思維害人不淺,會讓人呆在舒適區不愿意出來。
上面所說的其他的方法其實也很簡單,稍微查查資料就能獲得,就是限制 Docker 日志大小和將 Docker 數據目錄切換到外部存儲中。
日志限制
1、編輯 Docker 的配置文件 /etc/docker/daemon.json,如果該文件不存在,就新建一個:
2、在該文件中添加以下內容,以限制單個日志文件的大小為 100MB ,并保留最近5個日志文件。這里我們使用 max-size 和 max-file 參數來控制日志的大小和數量:
- max-size:單個日志文件的最大大小;
- max-file:最多保留幾個日志文件,當單個文件的日志大小超過設置后,會產生新的日志文件。
3、重新啟動 Docker 服務使配置生效:
數據目錄切換
在 CentOS 中,Docker 默認的目錄為 /var/lib/docker ,可以使用 Docker 配置文件中的 data-root 選項,進行 Dcoker 數據目錄的設置,具體步驟如下:
1、在 /etc/docker/daemon.json 配置文件中添加 data-root 選項:
- /home/docker 目錄為外接存儲,或者空間比較大的卷。
2、停用 Docker。
3、將 Docker 默認目錄中的內容拷貝到新的目錄中:
- 一個用于遠程同步文件和目錄的工具;
- 告訴 rsync 以歸檔模式同步文件和目錄,其中 a 表示歸檔模式, q 表示安靜模式(不顯示輸出), x 表示不跨越文件系統邊界, P 。
4、修改默認目錄的名稱為 bak:
這樣做的好處是可以對原始數據進行備份,等運行穩定了再進行刪除,另外就是防止配置沒有生效導致還是讀取的原始目錄。
5、啟用 Dcoker:
在上面第三步中使用了 rsync 這個命令來進行內容的同步,這個命令的含義是使用 rsync 工具將本地計算機中 /var/lib/docker/ 目錄下的所有文件和子目錄同步到另一個本地計算機中的 /home/docker/
在此之前,進行文件或目錄的操作使用 cp 和 scp 比較多,這次查資料時知道了 rsync 這個命令工具,便繼續學習了下和 cp 、 scp 。
rsync 和 cp 、 rsync 的區別
- 復制方式:cp 和 scp 會將整個文件復制到目標位置,而 rsync只會復制需要更新的部分,這可以提高復制的速度和效率。
- 支持性:rsync 支持更多的操作,例如文件同步、文件備份、文件恢復等。cp 和 scp 僅支持文件復制。
- 傳輸方式:cp 在本地文件系統之間復制文件,scp 進行遠程操作,而 rsync 可以在本地或遠程機器之間進行文件同步。
- 效率:rsync 更有效率,因為它只復制需要更新的文件。
- 可選項:rsync 提供了更多的可選項和配置選項,例如壓縮、部分傳輸、跨文件系統同步等。
總之, rsync 是一個更強大、更高效的文件復制和同步工具,如果需要在本地或遠程機器之間進行文件同步、備份和恢復等操作,建議使用rsync。而 cp 和 scp 則適用于簡單的本地文件復制和遠程文件傳輸。
總結
通過這次日志限制和目錄切換的學習,有兩點思考:
1、很多時候,更好的方式就在離你不遠的地方,就看你愿不愿意往前邁一步去探尋一下,也就是說不能將就,不要有「又不是不能用」的思維,做產品、學技能都是一樣。
2、工作之后的很多技能的學習都是在不斷解決問題中學會的,這樣會讓你慢慢變得很有經驗,但不系統,即便某個領域感覺已經非常熟悉了,我覺得也有必要再看看書進行系統化學習,肯定能掃出很多盲點。