docker 容器目录挂载到宿主机,容器目录不为空,宿主机内容为空

这是不挂载目录时,容器的内容

docker run -it \
--privileged=true \
--name=lnmp2 \
higaohao/lnmp \
/bin/bash
image.png

这是挂载目录时,宿主机和容器的内容

/data2,/data2/www,这两个目录宿主机都是不存在的,挂载容器的/www后生成的。

可是生成的宿主机的目录是空的,容器的/www当然也是空的。

如果不挂载目录,容器的/www是有内容的。

docker run -it \
-v /data2/www:/www \
-v /data2/nginx_conf:/usr/local/nginx/conf \
-v /data2/php8:/usr/local/php8 \
--privileged=true \
--name=lnmp2 \
higaohao/lnmp \
/bin/bash

image.png

阅读 7.1k
2 个回答

容器本身www目录下的内容是存在镜像里面的,如果你把宿主机的目录挂载到容器的www目录下,宿主机的目录内容会覆盖容器的www目录内容,你宿主机内容是空的,挂载后自然也是空的。

本身这是docker的一套机制,就像linux mount挂载一样,挂载到的目录本身就会被被挂在的所取代。

可以先不进行挂载,运行第一次后将初始化后的目录或配置拷贝出来,然后再启动添加映射的方法,实现挂载。如果觉得麻烦,就把第一次初始化后的文件拷贝出来进行备份,以后就不用这么折腾了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题