- A+
对于Docker,数据将存储在容器内。当我们删除容器时,数据将丢失。在本指南中,我们将学习如何创建docker卷,如何将其连接到容器以及如何在两个或多个容器中共享同一卷来存储数据。
-
为什么我们需要Docker卷?
- 删除容器时,不会删除卷。
- 将体积连接或分离到容器上。
- 在不同容器之间共享卷(存储/数据)。
- 将容器与存储分离。
- 将卷存储在远程主机或云上。
我们可以对数据和容器进行逻辑划分。我们可以通过以下方式保存数据:如果我们删除
容器,那么我们的数据也将存在。因此,在销毁容器之后,我们可以将卷附加到任何现有容器以及新容器上。Docker Volumes入门
docker volume命令,使我们可以创建一个卷的卷命令的详细信息,检查有关可用卷的卷的详细数据,列表,删除卷。
# docker volume
创建 Docker Volumes
创建 docker volume 的语法为:
docker volume create <volume_name>
例如:
# docker volume create devops_volume
上面的命令将创建一个名为 devops_volume.的volume
列出 docker volumes
要列出所有已创建的Docker卷,请运行:
# docker volume ls
检查Docker卷
docker volume inspect 命令会给你创造的音量,位置,名称和范围的细节。
语法:
docker volume inspect <volume_name>
让我向您展示名为devops_volume的Docker卷的详细信息。
# docker volume inspect devops_volume
创建具有自定义卷的容器
语法:
docker container create --name <container_name> -it --mount source<volume_name>,target=/<folder_Name> <image_name>
例如:
# docker container create --name myBusyBox1 -it --mount source=devops_volume,target=/app busybox
要验证是否已创建容器,请使用docker ps -a命令:
启动容器
要启动新创建的容器,例如myBusyBox1,请运行:
# docker container start myBusyBox1
如上图所示,容器myBusyBox1已在8分钟前创建,并在6秒前启动。
从共享卷在容器之间复制文件
让我们创建一个场景,在该场景中,我们将在共享位置的一个容器中创建文件,然后尝试从另一个容器访问文件。
我们已经创建了一个名为myBusyBox1的容器。让我们创建另一个,例如myBusyBox2。
现在,我们有两个容器处于运行状态,即myBusyBox1和myBusyBox2。
让我们连接到第一个容器,并在/ app文件夹中创建一个文件。
# docker exec -it myBusyBox1 sh
上面的命令将带您进入容器。
然后,在/ app文件夹中创建一个名为devops的新文件夹,并从第一个容器退出。
现在,将文件(例如index.html)从本地系统复制到myBusyBox1容器的位置/ app / devops /中。
# docker container cp index.html myBusyBox1:/app/Devops
现在连接到另一个容器myBusyBox2,并验证/ app / devops文件夹中是否存在index.html文件。
# docker exec -it myBusyBox2 sh
从上面的屏幕截图可以确认两个容器共享相同的体积。
我们可以使用docker volume inspect命令检查卷的Mountpoint位置,如下所示:
# docker volume inspect devops_volume
如您所见,安装点位置为/var/lib/docker/volumes/devops_volume/_data。
让我们转到安装点位置,查看复制的文件是否可用。
在Mountpoint位置,我们找到了相同的文件。
删除Docker卷
删除卷的语法为:
docker volume rm <volume_name>
让我们删除名为devops_volume的卷
# docker volume rm devops_volume
在上面的屏幕截图中,我们正在尝试删除该卷,但由于该卷已在使用中而无法删除。因此,首先我们需要杀死容器并释放体积。然后我们可以删除该卷。
为此,首先使用命令删除所有正在运行的容器:
# docker rm –f $(docker ps -aq)
然后删除该卷
# docker volume rm devops_volume
一次删除所有卷
使用docker rm命令,我们可以一次删除一个卷。如果我们有多个卷,并且要删除所有卷,则必须使用prune命令。
让我们创建一些卷:
现在,使用以下命令一次删除所有卷:
# docker volume prune
能否看到?我们一口气删除了所有卷。
- 安卓客户端下载
- 微信扫一扫
- 微信公众号
- 微信公众号扫一扫