在Docker容器中挂载卷

在某些项目中,可能存在一些场景,其中为项目的不同部分创建了多个容器,并且其中一些容器也共享公共文件。现在,您要在所有容器之间创建一个共享目录,以便可以从所有容器访问该目录或卷,并可以从任何容器更改该目录中的文件。

您可以这样做,创建一个卷并将其安装到所有容器上。这样,所有容器都将具有对该特定卷的共享访问权限,并且您将能够访问和修改该卷中的文件。

在本文中,我们将创建一个卷并将其安装到两个不同的容器中。然后,我们将在该卷内创建一个文件,并将通过两个容器访问同一文件。我们还将尝试删除容器,然后通过另一个容器访问相同的文件。

步骤

要显示所有现有卷,请使用以下命令。

sudo docker volume ls

现在,使用以下命令使用任何名称(例如nhooo)创建一个新卷。

sudo docker volume create nhooo

您还可以使用以下命令检查刚刚创建的卷。

sudo docker volume inspect nhooo

现在,我们将使用基本映像ubuntu创建一个容器(例如container01),并将nhooo卷安装到该容器,然后使用bash访问该容器。

sudo docker run -it -v nhooo:/sharedVol --name container01 ubuntu

在上面的命令中,-i标志用于在交互式外壳中显示bash,-v标志用于将刚刚创建的nhooo卷挂载到在container01内部创建的名为sharedVol的新目录中。

现在,我们将尝试通过容器的bash在/ sharedVol目录中创建一个新文件。在bash中,一一键入以下命令。

ls
cd /sharedVol
echo “Welcome to docker nhooo” > dockertutorials.txt
ls
exit

ls命令将列出容器内的所有目录。您还将在此处找到sharedVol目录。转到该目录并创建带有消息“ Welcome to docker nhooo”的文件(dockertutorials.txt)。检查文件是否已使用ls命令创建。

现在,退出重击。创建另一个容器(例如,container02)并在其中安装相同的卷。

sudo docker run -it -v nhooo:/sharedVol --name container02 ubuntu

在此容器的bash内,转到sharedVol目录,您将找到在container01中创建的文件。您可以使用以下命令。

cd sharedVol
ls
cat dockertutorials.txt
exit

现在,如果您同时删除了两个容器并创建了一个新容器并安装了nhooo卷,则将在其中找到创建的文件。让我们使用以下命令尝试一下。

sudo docker rm -f container01 container02
sudo docker ps -a
sudo docker run -it -v nhooo:/sharedVol --name container03 ubuntu

上面的命令将删除这两个容器,列出现有容器以验证是否已删除这些容器,并创建一个新的ubuntu图像容器container03并在其中安装nhooo卷。

ls
cd sharedVol
ls
cat dockertutorials.txt

您会发现那里也存在相同的文件。

总而言之,如果您为项目维护多个容器,并且想要所有容器的共享目录或卷,则可以使用本文中提到的步骤装入新的卷。