开发者学堂课程【深入解析 Docker 容器化技术:容器的目录挂载】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/659/detail/10945
容器的目录挂载
内容介绍
一、容器的目录挂载说明
二、演示
一、容器的目录挂载说明
在这个章节中将学习目录挂载,通过观察下面这个场景来进行讲解,如图 centos 宿主机中创建一个 tomcat 容器,后期要进行布置一个 web 项目的话,肯定要将项目放在 tomcat 容器中的 webapps 目录下,那么在项目中肯定有很多配置文件,比如 xx.yml文件,那么将项目部署到容器后,如果需要修改配置文件的话就会很麻烦,需要先登录到该容器,再修改配置文件,最后退出容器,所以在这个过程中可以使用目录映射简化流程,就是在现在的宿主机当中如果将目录/opt与 project 的目录做一个映射,那么就可以不用再进行登录后才能修改配置文件,只需要修改宿主机的文件即可,那么这个过程就称为目录挂载,要求创建容器的过程中 docker run 要加上选项-v。
格式为创建容器,添加-v 参数,后边为本地宿主机目录与容器目录做映射关系,下面开始演示。
二、演示
首先查看本地 opt,可以看到没有任何文件,如:
[root@localhost ~]# cd /opt
/
[root@loca
l
host opt]#
ll
total 0
drwx—
x
--
x
. 4 root root 28 Sep
18 10:30 containerd
drwxr-xr-x. 2 root root 6 mar 26 2015 rh
然后通过 docker run 去创建容器 c2,而要完成目录的挂载则要加上-v 选项,跟上 opt,:后跟上要将文件映射到的位置,如:
[root@localhost opt]# docker run -itd --name c2 -
v
/opt:/usr/ local/myhtml centos /bin/bash
命令代表创建容器然后进行目录挂载,将 opt 输入到 opt 目录然后与/usr/ local/myhtml目录做一个映射关系,回车启动如下:
53f5c8cf32010fd62015d9f 56b4277af5903db592711929e46638513b9e35196
此时进入 c2容器查看可以发现,c2下有两个文件夹与宿主机目录下面文件夹相同,如:
[root@localhost ~]# docker exec -it_ /c2 /bin/bash
[root@53f5c8cf3201 /]# cd /usr/ local/ myhtml/
[root@53f5c8cf3201 myhtml]# ll
total 0
drwx--x--x. 4 root root 28 Sep 18 10:30 containerd
drwxr-xr-x. 2 root root 6 Mar 26 2015 rh
因为容器与宿主机进行映射了,所以宿主机下有什么文件,容器相应的目录下也有相同的文件。下面可以进行验证,首先新建一个文件,写入内容 ddddd,如:
[root@localhost opt]# vim 1.txt
然后再回到容器中查看目录下的文件,如:
[root@53f5c8cf3201 myhtml]# ll
total 0
drwx--x--x. 1 root root 6 Sep 19 05:44 1.txt
drwx--x--x. 4 root root 28 Sep 18 10:30 containerd
drwxr-xr-x. 2 root root 6 Mar 26 2015 rh
[root@53f5c8cf3201 myhtml ]# cat 1. txt
ddddd
容器中也有文件1.txt,内容为 ddddd 说明,映射成功。再次编辑宿主机中的文件1.txt,拷贝一行 ddddd,则再次回到容器查看1.txt 文件内容,如:
[root@53f5c8cf3201 myhtml ]# cat 1. txt
ddddd
ddddd
所以在这个过程中如果后期再想修改配置文件就变得简单多了。那么这个过程就叫做目录挂载。