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