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