如果您沒有注意到,每次我們啟動容器時,我們的待辦事項列表都會被清除干凈為什么是這樣讓我們深入了解容器是如何工作的
容器的文件系統(tǒng)
當一個容器運行時,它使用圖像中的各個層作為其文件系統(tǒng)每個容器還有自己的暫存空間來創(chuàng)建/更新/刪除文件任何更改都不會在另一個容器中看到,即使它們使用相同的圖像
為了看到這一點,我們將啟動兩個容器并在每個容器中創(chuàng)建一個文件您將看到在一個容器中創(chuàng)建的文件在另一個容器中不可用
1.啟動一個ubuntu容器,該容器將創(chuàng)建一個以/data.txt1 到 10000 之間的隨機數(shù)命名的文件。
docker run —d ubuntu bash —c "shuf —i 1—10000 —n 1 —o /data.txt amp,amp, tail —f /dev/null"
如果您對該命令感到好奇,我們將啟動一個 bash shell 并調(diào)用兩個命令第一部分選擇一個隨機數(shù)并將其寫入/data.txt. 第二個命令只是監(jiān)視一個文件以保持容器運行
2.驗證我們可以通過execing 到容器中看到輸出為此,請打開儀表板并單擊運行ubuntu映像的容器的第一個操作
您將看到一個終端在 ubuntu 容器中運行 shell運行以下命令以查看/data.txt文件的內(nèi)容之后再次關(guān)閉此終端
$ cat /data.txt
如果您更喜歡命令行,您可以使用該docker exec命令來執(zhí)行相同的操作您需要獲取容器的ID并使用以下命令獲取內(nèi)容
$ docker exec lt,container—idgt, cat /data.txt
你應(yīng)該看到一個隨機數(shù)!
3.現(xiàn)在,讓我們啟動另一個ubuntu容器,我們會看到我們沒有相同的文件。
$ docker run —it ubuntu ls /
看!那里沒有data.txt文件!那是因為它僅被寫入第一個容器的暫存空間。
4.繼續(xù)并使用docker rm —f lt,container—idgt,命令刪除第一個容器。
通過前面的實驗,我們看到每個容器每次啟動都是從鏡像定義開始的雖然容器可以創(chuàng)建,更新和刪除文件,但當容器被移除并且所有更改都與該容器隔離時,這些更改會丟失有了卷,我們可以改變這一切
卷提供了將容器的特定文件系統(tǒng)路徑連接回主機的能力如果容器中的目錄已掛載,則該目錄中的更改也會在主機上看到如果我們在容器重啟時掛載相同的目錄,我們會看到相同的文件
卷有兩種主要類型我們最終將同時使用兩者,但我們將從命名卷開始
持久化數(shù)據(jù)
默認情況下,待辦事項應(yīng)用程序?qū)⑵鋽?shù)據(jù)存儲在容器文件系統(tǒng)中的SQLite 數(shù)據(jù)庫中/etc/todos/todo.db如果你不熟悉 SQLite,不用擔(dān)心!它只是一個關(guān)系數(shù)據(jù)庫,其中所有數(shù)據(jù)都存儲在一個文件中雖然這對于大型應(yīng)用程序來說不是最好的,但它適用于小型演示稍后我們將討論將其切換到不同的數(shù)據(jù)庫引擎
由于數(shù)據(jù)庫是單個文件,如果我們可以將該文件保存在主機上并使其可用于下一個容器,它應(yīng)該能夠從最后一個停止的地方繼續(xù)通過創(chuàng)建一個卷并將其附加到存儲數(shù)據(jù)的目錄,我們可以持久化數(shù)據(jù)當我們的容器寫入todo.db文件時,它將被持久化到卷中的主機
如前所述,我們將使用命名卷將命名卷視為簡單的數(shù)據(jù)桶Docker 維護磁盤上的物理位置,您只需要記住卷的名稱每次使用卷時,Docker 都會確保提供正確的數(shù)據(jù)
1.使用docker volume create命令創(chuàng)建卷。
$ docker volume create todo—db
2.在儀表板中再次停止并刪除待辦事項應(yīng)用程序容器docker rm —f lt,idgt,,因為它仍在運行而不使用持久卷。
3.啟動 todo 應(yīng)用程序容器,但添加—v標志以指定卷安裝我們將使用命名卷并將其掛載到/etc/todos,這將捕獲在該路徑創(chuàng)建的所有文件
$ docker run —dp 3000:3000 —v todo—db:/etc/todos getting—started
4.容器啟動后,打開應(yīng)用程序并將一些項目添加到您的待辦事項列表中。
5.停止并刪除 todo 應(yīng)用程序的容器使用儀表板或docker ps獲取 ID,然后docker rm —f lt,idgt,將其刪除
6.使用上面的相同命令啟動一個新容器。對于個人用戶,Docker桌面則仍舊可以免費使用,只是Docker把它的訂閱名稱從“Free”換成了“Personal”。。
7.打開應(yīng)用程序。您應(yīng)該會看到您的項目仍在您的列表中!
8.完成檢查列表后,繼續(xù)刪除容器。
。鄭重聲明:此文內(nèi)容為本網(wǎng)站轉(zhuǎn)載企業(yè)宣傳資訊,目的在于傳播更多信息,與本站立場無關(guān)。僅供讀者參考,并請自行核實相關(guān)內(nèi)容。
2023年2月15日,湯臣倍健與美團買藥在北京舉辦了2023
2021年收入增長目標應(yīng)能確保實現(xiàn),2022年收入增長預(yù)計將
具體來看,一是簡化業(yè)務(wù)流程和材料,便利北京冬奧會相關(guān)區(qū)域內(nèi)境
炒股就看金麒麟分析師研報,權(quán)威,專業(yè),及時,全面,助您挖掘潛
,據(jù)索尼官方消息,新星粉,銀河紫,星光藍,三款全新配色Dua
,新氧數(shù)據(jù)顏究院發(fā)布《2021醫(yī)美行業(yè)白皮書》,白皮書顯示,