在Docker中的数据管理
首先
这是关于Docker数据管理的文章。请注意,其中一些信息可能已过时。
请阅读我关于Docker相关内容的文章,如有兴趣。
- 
- Dockerにおけるコンテナ
 
 
- 
- Dockerにおけるイメージとは
 
 
- 
- Dockerにおけるネットワーク
 
 
- Dockerにおけるデータ管理
 
我想在最开始时就确认一个Docker中的术语,即将容器内的数据与个人电脑(主机)的文件系统连接起来的挂载操作。
“山就是”
存储在Docker容器中的数据,在停止容器时不会消失,但如果删除容器,数据也会一同消失。
使用Docker的挂载功能,可以将容器内的数据关联到计算机(主机)的文件系统,以使数据能够与容器的创建和删除生命周期分离,并可以长期进行管理。
在 Docker 中挂载存储空间的三种方法。
为了将在Docker容器内生成的数据持久化,需要与主机之间进行数据共享。在Docker中,可以使用以下三种方法进行数据共享。
- 
- 音量挂载
 
 
- 
- 绑定挂载
 
 
- tmpfs(临时内存)挂载
 
接下来,我们将首先解释一下卷挂载。
音量调节

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
绑定挂载

使用容器绑定挂载,可以直接将容器内的更改反映到主机的文件系统中,并且主机端的更改也会同样反映到容器中。这样一来,就可以实现容器内外数据的共享和持久化。
要使用绑定挂载,请使用-v选项指定容器目录和主机目录。
$  docker run -itd --name bind-test -v "$(pwd)"/source:/app nginx
将tmpfs(临时内存)挂载

tmpfs通常用于存储临时文件和临时数据。例如,它被用于有效处理临时文件、临时缓存数据、日志文件等临时数据。
然而,需要注意的是,通过重新启动容器或主机可能会导致数据丢失。
可以使用tmpfs选项挂载tmpfs。以下是通过Docker命令挂载tmpfs的示例。
$ docker run -d --name tempf-test --tmpfs /tmp -p 8080:80 nginx
最后
非常感谢您阅读完整篇文章。
如果有任何差错,请您指出,我将不胜感激。
以下是其中一个中文本地化的翻译选项:
参考资料