在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
最后
非常感谢您阅读完整篇文章。
如果有任何差错,请您指出,我将不胜感激。
以下是其中一个中文本地化的翻译选项:
参考资料