背景说明
数据卷的定义
数据卷(Data Volumes)是一个可以供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于Linux中的mount行为
那数据卷有啥作用呢?
——其实就是将容器中的数据持久化到操作系统本地目录,也方便在操作系统修改容器相关配置等
docker目前提供了2种方式创建数据卷
1.-v 子命令,如下:
docker run -d --name centos0329 -v /home/host:/home/container centos
2.通过Dockerfile文件添加
这种方式我们后续在学习Dockerfile时再补充
问题起源
在利用Centos镜像测试可以实现主机到容器的数据共享及同步后,想试试其他镜像,如Nginx,Tomcat等
使用如下命令
docker run -d -p 8888:80 --name nginx0329 -v /home/docker/nginx/log:/var/log/nginx/ nginx:1.16.1
利用已经pull到本地的nginx:1.16.1创建一个nginx运行容器,将本地目录/home/docker/nginx/log 与容器的 /var/log/nginx 映射建立数据卷
结果很神奇,本地的目录随之创建了,但是文件并未同步过来,本地touch一个问津啊,容器内也为同步生成。
解决办法
加上--privileged=true选项
如下
docker run -d -p 8888:80 --name nginx0329 -v /home/docker/nginx/log:/var/log/nginx/ --privileged=true nginx:1.16.1
就可以了,而且注意,--privileged=true选项不要放在最后,跟在容器目录后才行。
注:--privileged=true最好紧跟 -v指令,要不然可能不起作用。