为什么从docker容器中看不到/ var / lib / docker / volumes / <volume> / _ data /中的文件?

时间:2019-01-14 14:15:03

标签: docker

我了解了docker(在Ubuntu 18.04 LTE(仿生)上),特别是关于管理持久性数据,我发现docker volumes

按照那里的示例,我尝试将一些文件添加到卷中,然后从容器中列出它们:

root@srv /v/l/machines# docker volume create hello
hello
root@srv /v/l/machines# docker run -d -v hello:/world busybox ls /world

Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
57c14dd66db0: Pull complete
Digest: sha256:7964ad52e396a6e045c39b5a44438424ac52e12e4d5a25d94895f2058cb863a0
Status: Downloaded newer image for busybox:latest
d488dd535de01209ccc4f4bbf9a269d7932868ca41c9fe538d7a95fad66cefae

该卷中没有数据,因此ls输出为空。可以。

root@srv /v/l/machines# docker volume inspect hello
[
    {
        "CreatedAt": "2019-01-14T14:57:47+01:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/hello/_data",
        "Name": "hello",
        "Options": {},
        "Scope": "local"
    }
]
root@srv /v/l/machines# date > /var/lib/docker/volumes/hello/_data/a.txt
root@srv /v/l/machines# date > /var/lib/docker/volumes/hello/_data/b.txt
root@srv /v/l/machines# docker run -d -v hello:/world busybox ls /world

ced5591203511f2f9a0194431ba8fca81df8442c38be993de454cadb1b93da09
root@srv /v/l/machines# docker run -d -v hello:/world busybox ls /world

7987ce187747016e81469cb1a150aa0a85ded58521fbc03f1a0f55e2e07358f0

root@srv /v/l/machines# ls /var/lib/docker/volumes/hello/_data/
a.txt  b.txt

这部分我不明白。 我在docker volume inspect所指向的位置添加了一些文件,但是在装载该卷的Docker容器中似乎看不到它们。为什么会这样?

1 个答案:

答案 0 :(得分:2)

您的容器以分离模式运行,这就是为什么您看不到任何输出的原因。

尝试运行docker logs <container-id>,它应该显示您的ls命令的结果。

或者,您可以省略-d标志以使容器在前台运行。这在您只想尝试的情况下特别有用。

文档:docker run – detached vs foreground