在 Docker 容器內掛載卷
在一些專案中,可能會遇到這樣的場景:您為專案的不同部分建立了多個容器,並且其中一些容器也共享一些公共檔案。現在,您希望在所有容器之間建立一個共享目錄,以便所有容器都可以訪問該目錄或卷,並從任何容器更改該目錄中的檔案。
您可以透過建立卷並將其掛載到所有容器來實現。這樣做,所有容器將共享訪問該特定卷,並且您將能夠訪問和修改該卷中的檔案。
在本文中,我們將建立一個卷並將其掛載到兩個不同的容器。然後,我們將在卷內建立一個檔案,並透過這兩個容器訪問同一個檔案。我們還將嘗試刪除容器,然後透過另一個容器訪問同一個檔案。
步驟
要顯示所有現有的卷,請使用以下命令。
sudo docker volume ls
現在,使用以下命令建立一個新的卷(例如,tutorialspoint)。
sudo docker volume create tutorialspoint
您還可以使用以下命令檢查剛剛建立的卷。
sudo docker volume inspect tutorialspoint
現在,我們將使用基本映象 ubuntu 建立一個容器(例如,container01),並將 tutorialspoint 卷掛載到該容器,並使用 bash 訪問該容器。
sudo docker run -it -v tutorialspoint:/sharedVol --name container01 ubuntu
在上述命令中,-i 標誌用於在互動式 shell 中顯示 bash,-v 標誌用於將您剛剛建立的 tutorialspoint 卷掛載到名為 sharedVol 的新目錄,該目錄在 container01 內建立。
現在,我們將嘗試透過容器的 bash 在 /sharedVol 目錄中建立一個新檔案。在 bash 中,依次鍵入以下命令。
ls cd /sharedVol echo “Welcome to docker tutorialspoint” > dockertutorials.txt ls exit
ls 命令將列出容器內的所有目錄。您還將在那裡找到 sharedVol 目錄。移動到該目錄並建立一個檔案(dockertutorials.txt),其中包含訊息“歡迎使用 docker tutorialspoint”。使用 ls 命令檢查檔案是否已建立。
現在,退出 bash。建立另一個容器(例如,container02)並將相同的卷也掛載到那裡。
sudo docker run -it -v tutorialspoint:/sharedVol --name container02 ubuntu
在此容器的 bash 中,轉到 sharedVol 目錄,您將找到在 container01 中建立的檔案。您可以使用以下命令。
cd sharedVol ls cat dockertutorials.txt exit
現在,如果您刪除這兩個容器並建立一個新容器並掛載 tutorialspoint 卷,您將找到在那裡建立的檔案。讓我們使用以下命令嘗試一下。
sudo docker rm -f container01 container02 sudo docker ps -a sudo docker run -it -v tutorialspoint:/sharedVol --name container03 ubuntu
以上命令刪除了這兩個容器,列出了現有的容器以驗證容器是否已刪除,並建立了一個新的 ubuntu 映象容器 container03 並將 tutorialspoint 卷掛載到其中。
ls cd sharedVol ls cat dockertutorials.txt
您會發現同一個檔案也存在那裡。
總而言之,如果您為專案維護多個容器,並且希望所有容器都有一個共享目錄或卷,則可以使用本文中提到的步驟掛載一個新卷。