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"
            }
        ]

表明多个数据卷的同时添加已经生效。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐