docker容器目录映射研究
一、通过 docker 命令创建容器
方法一: 不映射目录
访问http://0.0.0.0:80
时,页面正常可浏览(前提是/usr/share/nginx/html
目录下有可访问的web页)。
1 | #方法一 |
方法二:
1, 当/root/diy_html
目录有内容时,宿主机目录覆盖容器目录.访问http://0.0.0.0:80
时,页面正常可浏览.
2, 当/root/diy_html
目录不存在或者无内容时,容器目录会变为空.访问http://0.0.0.0:80
时,返回403 Forbidden
.
1 | #方法二 |
方法三:
1, 如果diy_html
有数据,宿主机覆盖容器。
2, 如果diy_html
没有数据,容器覆盖宿主机。
访问http://0.0.0.0:80
时,页面正常可浏览。
-v diy_html:/usr/share/nginx/html
相当于执行docker volume create diy_html
在宿主机上创建目录/var/lib/docker/volumes/diy_html/_data
与容器目录/usr/share/nginx/html
映射
1 | #方法三 |
以上宿主机的目录数据不受容器的停止或删除的影响,数据会一直存在。
二、通过 docker compose 创建容器
1 | #version: '3' |
1 | #创建容器 |
1, 方法三和方法四,当容器停止或删除时/var/lib/docker/volumes/nginx_html/_data
数据被清空(这与通过docker命令创建容器的情况不同)/www/nginx/html
数据会一直存在
2, 方法一、方法二 不受容器停止或删除的影响,宿主机数据一直存在。