nginx 不同容器和系统路径中的Docker卷

xxls0lw8  于 2022-11-21  发布在  Nginx
关注(0)|答案(1)|浏览(140)

我可以访问一台安装了Docker的centos 7.9计算机。在本例中,我将使用nginx映像以及/usr/share/xml/fontconfig/usr/share/nginx/html目录。您可以看到,这些目录包含nginx的一些重要文件:

root@f7990388c7d0:/# ls /usr/share/nginx/html/
50x.html  index.html
root@f7990388c7d0:/# ls /usr/share/xml/fontconfig/
fonts.dtd

让我们创建一个卷,将其附加到/usr/share/nginx/html处的nginx容器,并确保我们可以同时看到服务器和容器上的文件:

[cloud_user@eb993010811c ~]$ docker volume create my_volume
my_volume
[cloud_user@eb993010811c ~]$ docker container run -d --name container1 -v my_volume:/usr/share/nginx/html nginx
f7990388c7d0302db7f1135549bf0bb1a024256d9a89ebead306a6d775449514
[cloud_user@eb993010811c ~]$ docker volume inspect my_volume
[
    {
        "CreatedAt": "2022-11-09T14:46:38Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/my_volume/_data",
        "Name": "my_volume",
        "Options": {},
        "Scope": "local"
    }
]
[cloud_user@eb993010811c ~]$ sudo ls /var/lib/docker/volumes/my_volume/_data
50x.html  index.html
[cloud_user@eb993010811c ~]$ docker container exec -it container1 ls /usr/share/nginx/html
50x.html  index.html
[cloud_user@eb993010811c ~]$ docker container exec -it container1 ls /usr/share/xml/fontconfig
fonts.dtd

到目前为止一切都很好。现在,让我们假设我们将 * 相同 * 的卷挂载到 * 不同 * 的容器和 * 不同 * 的文件系统路径上:

[cloud_user@eb993010811c ~]$ docker container run -d --name container2 -v my_volume:/usr/share/xml/fontconfig nginx
7ceec36b8c4d7d0eb172c1926d273d4e2e18b2cf509c8c5a18bf1302e98aedfc
[cloud_user@eb993010811c ~]$ sudo ls /var/lib/docker/volumes/my_volume/_data
50x.html  index.html
[cloud_user@eb993010811c ~]$ docker container exec -it container2 ls /usr/share/xml/fontconfig
50x.html  index.html
[cloud_user@eb993010811c ~]$ docker container exec -it container1 ls /usr/share/xml/fontconfig
fonts.dtd
[cloud_user@eb993010811c ~]$ docker container exec -it container1 /bin/bash
root@f7990388c7d0:/# ls /usr/share/nginx/html/
50x.html  index.html
root@f7990388c7d0:/# ls /usr/share/xml/fontconfig/
fonts.dtd

我们可以看到Docker服务器没有看到fonts.dtd文件,并且container2的目录内容已经被container1/usr/share/nginx/html目录中包含的内容有效地侵占了。另外,container1的目录内容不受此过程的影响。
从安全性/稳定性的Angular 来看,我可以理解让一个卷中的文件对应于不同的文件系统路径可能没有什么意义。但是,有没有可能通过一些不同的方式来实现这一点?这将 * 必须 * 有用例,每件事都有用例。

相关问题