Docker日志大小限制和切換存儲目錄

Docker日志大小限制和切換存儲目錄

產品的各種環境使用了很多?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"  }  }
  • max-size:單個日志文件的最大大?。?/li>
  • max-file:最多保留幾個日志文件,當單個文件的日志大小超過設置后,會產生新的日志文件。

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"  }
  • /home/docker?目錄為外接存儲,或者空間比較大的卷。

2、停用?Docker。

sudo systemctl stop docker

3、將?Docker?默認目錄中的內容拷貝到新的目錄中:

sudo rsync -aqxP /var/lib/docker/ /home/docker/
  • 一個用于遠程同步文件和目錄的工具;
  • 告訴 ?rsync??以歸檔模式同步文件和目錄,其中 ?a??表示歸檔模式, ?q??表示安靜模式(不顯示輸出), ?x??表示不跨越文件系統邊界, ?P?。

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 和 cp 、 rsync 的區別

  • 復制方式:cp?和?scp?會將整個文件復制到目標位置,而?rsync只會復制需要更新的部分,這可以提高復制的速度和效率。
  • 支持性:rsync?支持更多的操作,例如文件同步、文件備份、文件恢復等。cp?和?scp?僅支持文件復制。
  • 傳輸方式:cp?在本地文件系統之間復制文件,scp?進行遠程操作,而?rsync?可以在本地或遠程機器之間進行文件同步。
  • 效率:rsync?更有效率,因為它只復制需要更新的文件。
  • 可選項:rsync?提供了更多的可選項和配置選項,例如壓縮、部分傳輸、跨文件系統同步等。

總之,?rsync?是一個更強大、更高效的文件復制和同步工具,如果需要在本地或遠程機器之間進行文件同步、備份和恢復等操作,建議使用rsync。而?cp?和?scp?則適用于簡單的本地文件復制和遠程文件傳輸。

總結

通過這次日志限制和目錄切換的學習,有兩點思考:

1、很多時候,更好的方式就在離你不遠的地方,就看你愿不愿意往前邁一步去探尋一下,也就是說不能將就,不要有「又不是不能用」的思維,做產品、學技能都是一樣。

2、工作之后的很多技能的學習都是在不斷解決問題中學會的,這樣會讓你慢慢變得很有經驗,但不系統,即便某個領域感覺已經非常熟悉了,我覺得也有必要再看看書進行系統化學習,肯定能掃出很多盲點。

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享