Docker挂载卷显示Linux挂载目录为空

5
我有一个挂载在 /media/ebs_volume 路径下的Linux分区,其设备名为 dev/sdh。 当我试图使用 -v /media/ebs_volume:/tmp/foo:ro 将其挂载到Docker容器中时,容器内的挂载目录 /tmp/foo 是空的! 在容器内部运行 ls -al /tmp/foo 命令得到的结果为空,但在主机上运行 ls -al /media/ebs_volume 命令可以看到其中有东西。
ec2-user@ip-10-0-2-50 ~]$ ls -al /media/ebs_volume/
total 28
drwxr-xrwx 4 root     root      4096 Jan 20 21:34 .
drwxr-xr-x 3 root     root      4096 Jan 29 23:18 ..
drwx------ 2 root     root     16384 Jan 20 21:29 lost+found
drwxrwxr-x 3 ec2-user ec2-user  4096 Jan 20 21:38 stuff
[ec2-user@ip-10-0-2-50 ~]$ docker run -it --rm -v /media/ebs_volume:/tmp/foo:ro nginx ls -al /tmp/foo
total 4
drwxr-xr-x 2 root root 4096 Jan 29 23:18 .
drwxrwxrwt 3 root root   16 Jan 30 17:33 ..

我尝试将卷挂载到主机的不同位置,并仅从主机挂载单个特定文件,而不是整个目录。如果我从主目录挂载某些东西,似乎没有任何问题。

有人有什么想法,可能发生了什么或者最好的调试方法?

以下是一些有用的输出(经过一些编辑):

[ec2-user@ip-10-0-2-50 ~]$ mount
proc on /proc type proc (rw,relatime)
/dev/xvda1 on / type ext4 (rw,noatime,data=ordered)
/dev/xvdh on /media/ebs_volume type ext4 (rw,relatime,data=ordered)
...                  

[ec2-user@ip-10-0-2-50 ~]$ docker version
Client:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   7392c3b/1.12.6
 Built:        Fri Jan  6 22:16:21 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   7392c3b/1.12.6
 Built:        Fri Jan  6 22:16:21 2017
 OS/Arch:      linux/amd64

[ec2-user@ip-10-0-2-50 ~]$ cat /proc/version
Linux version 4.4.41-36.55.amzn1.x86_64 (mockbuild@gobi-build-60008) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Wed Jan 18 01:03:26 UTC 2017

[ec2-user@ip-10-0-2-50 ~]$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
1436d3223b27        nginx               "/bin/bash"              47 seconds ago      Up 46 seconds       80/tcp, 443/tcp     happy_leakey

[ec2-user@ip-10-0-2-50 ~]$ docker inspect 1436d3223b27
[
    {
        "Id": "1436d3223b270f78654d26682c469f4d7bdd24766c60f4052cb1a3fb60c86c12",
        "Created": "2017-01-30T17:34:12.430135675Z",
        "Path": "/bin/bash",
        ...
        "Image": "sha256:cc1b614067128cd2f5cdafb258b0a4dd25760f14562bcce516c13f760c3b79c4",
        ...
        "Driver": "devicemapper",
        "MountLabel": "",
        ...
        "HostConfig": {
            "Binds": [
                "/media/ebs_volume:/tmp/foo:ro"
            ],
            "ContainerIDFile": "",
            ...
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            ...
        },
        ...
        "Mounts": [
            {
                "Source": "/media/ebs_volume",
                "Destination": "/tmp/foo",
                "Mode": "ro",
                "RW": false,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            ...
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.11.9-1~jessie"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "nginx",
            "Volumes": null,
            ...
        },
        ...
    }
]

你最终解决了这个问题吗?我也遇到同样的问题,它挂载了文件夹,但没有文件! - Joel
抱歉@Joel。我从未找到一个真正干净的答案,但我已经提交了一个解决方法作为解决方案。祝你好运。 - Klugscheißer
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接