在Docker中的数据管理

首先

这是关于Docker数据管理的文章。请注意,其中一些信息可能已过时。

请阅读我关于Docker相关内容的文章,如有兴趣。

    • Dockerにおけるコンテナ

 

    • Dockerにおけるイメージとは

 

    • Dockerにおけるネットワーク

 

    Dockerにおけるデータ管理

我想在最开始时就确认一个Docker中的术语,即将容器内的数据与个人电脑(主机)的文件系统连接起来的挂载操作。

“山就是”

将主机的目录或文件系统连接到Docker容器中,使其处于可用状态。

存储在Docker容器中的数据,在停止容器时不会消失,但如果删除容器,数据也会一同消失。

使用Docker的挂载功能,可以将容器内的数据关联到计算机(主机)的文件系统,以使数据能够与容器的创建和删除生命周期分离,并可以长期进行管理。

在 Docker 中挂载存储空间的三种方法。

为了将在Docker容器内生成的数据持久化,需要与主机之间进行数据共享。在Docker中,可以使用以下三种方法进行数据共享。

    1. 音量挂载

 

    1. 绑定挂载

 

    tmpfs(临时内存)挂载

接下来,我们将首先解释一下卷挂载。

音量调节

通过Docker管理的主机文件系统中的一部分进行存储,并挂载到容器中。
スクリーンショット (251).png

Volume mount的好处包括以下几点。

    • Dockerが提供するデータ管理機能を利用するため、コンテナの移動やバックアップの際に便利です。

 

    • データの永続性が保証され、コンテナの再作成や更新時にデータが保持されます。

 

    複数のコンテナ間で同じボリュームを共有できるため、データの共有が容易です。
关于卷的注意事项
即对于挂载的数据的编辑方法存在限制。卷挂载无法直接访问卷而绕过容器。所以,如果要编辑挂载的文件,则需要通过容器来进行编辑。

关于容器启动时的卷挂载行为

如果使用尚不存在的卷名称进行挂载,并且挂载点目录中不存在文件,则会创建一个空卷,在挂载时卷内为空。
另一种情况是使用尚不存在的卷名称进行挂载,并且挂载点目录中已经存在目录或文件,则容器上已存在的目录或文件将被复制到创建的卷中。

下面我将对与音量相关的命令进行解释。

创建音量

创建Docker卷的命令是docker volume create <卷名>。

$ docker volume create my-vol

显示音量列表

要确认是否创建了名为my-vol的卷,请使用docker volume ls命令。

$ docker volume ls
DRIVER    VOLUME NAME
local     my-vol

显示音量的详细信息

此外,要确认my-vol存在于何处,可以使用docker volume inspect <卷名>命令。

$ docker volume inspect my-vol

[
    {
        "CreatedAt": "2023-06-26T04:54:52Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
        "Name": "my-vol",
        "Options": null,
        "Scope": "local"
    }
]

通过查看上述内容,可以确认”Mountpoint”被设定为”/var/lib/docker/volumes/my-vol/_data”,并且my-vol卷已成功创建在/var/lib/docker/volumes/my-vol/_data中。

安装音量的方法

在启动容器时,需要使用-v选项来挂载卷。

$ docker run -itd --name mount-c1 -v vol1:/app nginx:latest

$ docker inspect mount mount-c1

// 省略
 "Mounts": [
            {
                "Type": "volume",
                "Name": "vol1",
                "Source": "/var/lib/docker/volumes/vol1/_data",
                "Destination": "/app",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            }
        ],
// 省略

删除音量

要删除卷,请使用docker volume rm <卷名称>命令。

$ docker volume rm my-vol

删除所有未挂载的卷

如果要批量删除未挂载的卷,请执行以下命令。

$ docker volume prune

绑定挂载

将不在Docker Engine控制下的现有目录(例如桌面或文档等)挂载到容器中称为绑定挂载。
スクリーンショット (252).png

使用容器绑定挂载,可以直接将容器内的更改反映到主机的文件系统中,并且主机端的更改也会同样反映到容器中。这样一来,就可以实现容器内外数据的共享和持久化。

要使用绑定挂载,请使用-v选项指定容器目录和主机目录。

$  docker run -itd --name bind-test -v "$(pwd)"/source:/app nginx

将tmpfs(临时内存)挂载

在Linux中,有一种机制可以在内存中创建临时文件系统。使用tmpfs可以在内存中创建文件系统,并且能够高速读写数据。
スクリーンショット (253).png

tmpfs通常用于存储临时文件和临时数据。例如,它被用于有效处理临时文件、临时缓存数据、日志文件等临时数据。

然而,需要注意的是,通过重新启动容器或主机可能会导致数据丢失。

可以使用tmpfs选项挂载tmpfs。以下是通过Docker命令挂载tmpfs的示例。

$ docker run -d --name tempf-test --tmpfs /tmp -p 8080:80 nginx

最后

非常感谢您阅读完整篇文章。

如果有任何差错,请您指出,我将不胜感激。

以下是其中一个中文本地化的翻译选项:

参考资料

 

广告
将在 10 秒后关闭
bannerAds