admin 管理员组文章数量: 1086019
docker创建容器共享目录
多个容器可以共享docker宿主机本地的某个目录,会大大提高使用效率。docker提供了一个-v参数,可以很好的解决这个问题。
如下,我们创建两台容器:
[root@localhost ~]# docker run -itd --name test2 -v /data01:/data01 centos7:latest /bin/bash
8930d4bef57c43137f7d901ed6b1f67ec906f155eea87d32b5e0b0b759612530
[root@localhost ~]# docker run -itd --name test3 -v /data01:/data01 centos7:latest /bin/bash
755d8fcb39afb23ae9c93466c5a3334397e8843216b9f8592527e1e3e405a754
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
755d8fcb39af centos7:latest "/bin/bash" 3 seconds ago Up 2 seconds test3
8930d4bef57c centos7:latest "/bin/bash" 10 seconds ago Up 9 seconds test2
这里我们使用了--name参数,给容器重命名,方便区分。
使用-v指定了宿主机的本地需要共享的目录为/data01,容器内共享的目录也为/data01
先看看效果,首先我们在宿主机的/data01目录里touch 1个文件,理论上在其他两个容器内是可以看到的。
[root@localhost ~]# cd /data01/
[root@localhost data01]# ls
[root@localhost data01]# touch 1
[root@localhost data01]# ls
1
[root@localhost data01]# docker exec -it test2 /bin/bash
[root@8930d4bef57c /]# ls /data01/
1
[root@8930d4bef57c /]# exit
exit
[root@localhost data01]# docker exec -it test3 /bin/bash
[root@755d8fcb39af /]# ls /data01/
1
可见,这个目录是生效的。
这里需要注意:
1,-v /data01:/data01中,冒号前面的/data01,指的是宿主机目录的绝对路径。我们在创建容器时,可以提前创建好,也可以启动完成在创建,都不会影响这个功能的使用。同样,冒号后面的/data01目录,也必须是绝对路径。如果目标容器内没有这个文件,那么他就会自动创建一个。
这个功能类似于nfs
2,权限问题。共享目录内的文件如果需要正常读取,文件的权限必须一致。我们如果使用的是root用户创建的文件,容器使用的是普通用户启动的业务的话,文件是无法读取的。为了保证业务的规范性,建议容器和宿主机的用户一致,包括GID和UID都要一致。这个和nfs也是同样的原理。
3,当容器里的文件存入共享目录之后,如果该容器被销毁,该文件是否还存在呢?我们来做个实验:
首先在test3的/data01目录里touch 2
[root@755d8fcb39af /]# cd /data01/
[root@755d8fcb39af data01]# ls
1
[root@755d8fcb39af data01]# touch 2
[root@755d8fcb39af data01]# ls
1 2
然后退出容器,删除容器test3
docker rm -f test3
再看本地:
[root@localhost data01]# ls
1 2
这个文件依然存在,并且依然能够被test2读取
[root@localhost data01]# docker exec -it test2 /bin/bash
[root@8930d4bef57c /]# ls /data01/
1 2
本文标签: docker创建容器共享目录
版权声明:本文标题:docker创建容器共享目录 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1686557690a10033.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论