Docker学习笔记3:-v 数据卷不生效问题解决

背景说明

数据卷的定义

数据卷(Data Volumes)是一个可以供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于Linux中的mount行为

那数据卷有啥作用呢?

——其实就是将容器中的数据持久化到操作系统本地目录,也方便在操作系统修改容器相关配置等

docker目前提供了2种方式创建数据卷
1.-v 子命令,如下:

docker run -d --name centos0329 -v /home/host:/home/contt q 6 Aainer centos

2.通过Dockerfile文件添加

这种方式我们后续在学习Dockerfile时再补充5 z Z G 2
问题起源

在利用C% R F w j &entos镜像测试可以实现主机到容器的数据共享及同步后,想试试其他镜像,如Nginx,Tomcat等
使用如下命令

docker run -d -p 8888:80 --name nginx0329 -v /home/docker/nginx/log:/var/log/nginx/ nginx:1.16X N f 1 Z I A % W.1

利用已经p} } { kull到本地的nginx:1.16[ F 1 ! I.1创建一个nginx运行容器,将本地目录/home/docker/nginx/log 与容器的 /var/log/nginx 映射建立B ) 3 S W / u ! #数据卷

结果很神奇,本地的目录随之创建了,但是文件并未同步过来,本地touch一个& m !问津啊,容器内也为同步生成。

解决O N W Z !办法

加上--privileged=true选项
如下

docker run -d -p 8888:80 --name nginx0329 -v /home/doD N p N 8 gcker/nginx/lv ~ D [ 4 Hog:/var/log/ng7 P v S j )inx/ --privileged=trueN l ^ , , 4 - [ ~ nginx} D C + ? 9:1.16.1

就可以了,而且注意,--privileged=true选项M 4 J j . B j不要放在Q 6 h o最后,跟在容器目录后才行。

注:--privileged=true最好紧跟 -v指令,要不然可能不起作用。