1. 单个添加
以官方centos镜像为例,Docker 添加数据卷(Data Volumes)的基本命令为:
[root@CentOS ~]# docker run -it -P --name volume_test -v /host_folder:/container_folder/inner_folder centos /bin/bash
其中,
/host_folder为宿主机的文件夹,需要提前mkdir建好;
/container_folder/inner_folder为容器内文件夹,运行命令后会自动创建,注意其是可以递归创建的;
另外宿主机的文件可以省略,其缺省路径在/var/lib/docker/volume下, 可以用docker inspect 容器命令查看具体路径,但由于其生成的文件夹名是随机的,不方便区别和使用,所以一般情况下不建议省略宿主机文件。
2.多个添加
同时添加多个数据卷的方式也简单粗暴,即添加多个-v即可:
[root@CentOS ~]# docker run -it -P --name volume_test -v /host_folder_1:/container_folder_1 \
-v /host_folder_2:/container_folder_2:ro \
-v /host_file:/container_file centos /bin/bash
每个数据卷互不影响,可以为不同的权限,不同格式,利用文件数据卷的方式还可以轻松同步容器里的.bash_history等记录型文件。
宿主机器执行inspect命令:
[root@CentOS ~]# docker inspect volume_test
可以在Json串中的Mounts以及HostConfig下的Binds看到相应的数据卷信息:
"HostConfig": {
"Binds": [
"/host_folder_1:/container_folder_1",
"/host_folder_2:/container_folder_2:ro",
"/host_file:/container_file"
],
...
}
"Mounts": [
{
"Type": "bind",
"Source": "/host_folder_1",
"Destination": "/container_folder_1",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/host_folder_2",
"Destination": "/container_folder_2",
"Mode": "ro",
"RW": false,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/host_file",
"Destination": "/container_file",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
]
表明多个数据卷的同时添加已经生效。
本文详细介绍了如何在Docker中使用数据卷进行数据持久化,包括单个和多个数据卷的添加方法,以及如何通过数据卷实现容器内外数据的同步和管理。
1006

被折叠的 条评论
为什么被折叠?



