溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么清理Docker數(shù)據(jù)

發(fā)布時(shí)間:2021-07-27 13:41:35 來(lái)源:億速云 閱讀:188 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹了怎么清理Docker數(shù)據(jù),具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Docker 不會(huì)對(duì)你的系統(tǒng)進(jìn)行任何配置更改……但是它會(huì)占用大量的磁盤(pán)空間。(使用 Docker)不一會(huì)兒,當(dāng)你輸入如下命令時(shí),就會(huì)返回一些可怕的使用情況統(tǒng)計(jì)信息:

docker system df

幸運(yùn)的是,Docker 允許您從未使用的鏡像、容器以及卷中回收磁盤(pán)空間。

定期修剪(prune)

為了安全地刪除已停止的容器,未使用的網(wǎng)絡(luò)和懸掛的圖像,最好每隔一段時(shí)間運(yùn)行以下命令:

docker system prune

更具風(fēng)險(xiǎn)的選擇是:

docker system prune -a

這也將抹除任何與正在運(yùn)行的容器無(wú)關(guān)的鏡像。這可能有一點(diǎn)極端,但是 Docker 還是會(huì)重新下載其所需的鏡像的。第一次下載會(huì)稍慢一些,但隨后會(huì)將鏡像緩存起來(lái)以備將來(lái)使用。

以下各節(jié)介紹了刪除特定項(xiàng)目的其他方法。

鏡像驅(qū)逐

Docker 鏡像是應(yīng)用程序(例如Web服務(wù),語(yǔ)言運(yùn)行時(shí)或者數(shù)據(jù)管理系統(tǒng))的磁盤(pán)快照。您可以通過(guò)輸入以下內(nèi)容來(lái)查看所有的鏡像,不管是運(yùn)行中的還是懸空的(與容器無(wú)關(guān)的鏡像):

docker image ls -a

一個(gè) Docker 鏡像可以通過(guò)輸入以下命令刪除:

docker image rm <name_or_id>

可以將任意數(shù)量的鏡像添加到此命令——用空格字符分隔它們。

容器清理

Docker 容器是鏡像運(yùn)行的實(shí)例,并且可以從同一容器中啟動(dòng)任意數(shù)量的容器。容器通常很小,因?yàn)樗鼈兪菬o(wú)狀態(tài)的,并且引用了鏡像的文件系統(tǒng)。通過(guò)輸入以下命令查看所有正在運(yùn)行和已停止的容器:

docker container ls -a

一旦一個(gè)容器停止了,你便可以刪除它。停止容器的命令如下:

docker container stop <name_or_id>

刪除容器的命令如下:

docker container rm <name_or_id>

同樣,可以在此命令中添加任意數(shù)量的以空格分隔的容器名稱(chēng)或者 ID。

幾乎沒(méi)有必要保留已停止的容器。 可以將 --rm 選項(xiàng)添加到 docker run 命令中,以在容器終止后自動(dòng)刪除該容器。

網(wǎng)路整理

容器可以連接到 Docker 管理的網(wǎng)絡(luò),因此它們才可以相互通信。這些是不會(huì)占用太多磁盤(pán)空間的配置文件。通過(guò)輸入以下內(nèi)容查看所有 Docker 網(wǎng)絡(luò):

docker network ls

輸入下面的命令可以刪除一個(gè)或多個(gè)無(wú)用的網(wǎng)絡(luò):

docker network rm <name_or_id>

同樣,可以在此命令中添加任意數(shù)量的以空格分隔的網(wǎng)絡(luò)名稱(chēng)或者 ID。

卷的蒸發(fā)

Docker 卷是虛擬磁盤(pán)映像。 必須將其附加到正在運(yùn)行的容器,以便它可以在兩次重新啟動(dòng)之間保存文件或其他狀態(tài)信息。 卷的大小取決于使用它的應(yīng)用程序,但是典型的數(shù)據(jù)庫(kù)即使在大多數(shù)情況下都是空的,也需要數(shù)百兆的空間。

通過(guò)以下命令便可查看所有 Docker 管理的磁盤(pán)卷:

docker volume ls

移除一個(gè) Docker 卷將會(huì)永遠(yuǎn)抹除其數(shù)據(jù)!沒(méi)有回頭路!

如果您要開(kāi)發(fā)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的應(yīng)用程序,通??梢员A粢粋€(gè)或多個(gè)數(shù)據(jù)轉(zhuǎn)儲(chǔ),這些數(shù)據(jù)轉(zhuǎn)儲(chǔ)可用于重新創(chuàng)建一組特定的記錄。大多數(shù)數(shù)據(jù)庫(kù)客戶(hù)端工具都提供轉(zhuǎn)儲(chǔ)功能,比如 Adminer 中的 Export 鏈接。

大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)將提供備份工具,例如 MySQL 中的 mysqldump 實(shí)用程序。 可以使用 docker exec 命令在正在運(yùn)行的容器上執(zhí)行這些操作。

以下 Linux / macOS 命令將在名為 mysql 的容器上運(yùn)行的名為 mydb 的 MySQL 數(shù)據(jù)庫(kù)備份到名為 backup.sql 的文件中。 使用密碼為 mysecret 的 MySQL root 用戶(hù):

docker exec mysql /usr/bin/mysqldump -u root -pmysecret mydb \  > backup.sql

Windows PowerShell 的等效命令:

docker exec mysql /usr/bin/mysqldump -u root -pmysecret -r mydb | \  Set-Content backup.sql

您還可以使用 docker cp 命令將數(shù)據(jù)文件復(fù)制到正在運(yùn)行的容器或從正在運(yùn)行的容器復(fù)制數(shù)據(jù)文件。 這是通過(guò)源路徑和目標(biāo)路徑傳遞的,容器由其 名稱(chēng)/ ID 區(qū)分,后跟冒號(hào)及其路徑,例如,

docker cp mycontainer:/some/file ./host/directory

假設(shè)您的數(shù)據(jù)是安全的,則可以通過(guò)輸入以下內(nèi)容來(lái)刪除任何未使用的卷:

docker volume rm <name>

可以使用以下方法刪除所有未使用的Docker卷——當(dāng)前未連接到正在運(yùn)行的容器的那些卷:

docker volume prune

或者,docker volume prune -a 將全部卷刪除。 畢竟你已經(jīng)備份了,不是嗎?

完全干凈的開(kāi)始

可以使用單個(gè)命令清除掉每個(gè)未使用的容器,鏡像,卷和網(wǎng)絡(luò):

docker system prune -a --volumes

如果要在沒(méi)有確認(rèn)提示的情況下強(qiáng)制清理,可以添加 -f 。 您的系統(tǒng)將恢復(fù)到?jīng)]有任何 Docker 數(shù)據(jù)的原始狀態(tài)。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“怎么清理Docker數(shù)據(jù)”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI