web-dev-qa-db-de.com

Docker Volume mounten keine Dateien

Ich versuche, meine Quelldateien in einem Verzeichnis im Docker unter/var/dynamo einzuhängen. Ich möchte in der Lage sein, Docker lokal auszuführen und meine lokalen Dateien während der Arbeit zu verwenden.

mit dem Run-Befehl: 

docker run -v $(pwd):/var/dynamo -d -t -p 8001:8001 --name dynamo davesrepo/dynamo

mit meiner Dockerfile  

FROM python:3.5.1
WORKDIR /var/dynamo
RUN pip3 install tornado
EXPOSE 8001

Wenn ich jedoch in den Container docker exec -it dynamo /bin/bash einhole und ls -la starte, ist das Verzeichnis leer!

[email protected]:/var/dynamo# ls -la
total 4
drwxr-xr-x  2 root root   40 Dec 29 03:37 .
drwxr-xr-x 24 root root 4096 Dec 29 03:36 ..

Wenn Sie docker inspect dynamo ausführen, wird das Verzeichnis ordnungsgemäß angehängt

[
{
    "Id": "7d3d338891aae32e001a3bb31d6be17802d238526830396472b011599a97212a",
    "Created": "2015-12-29T03:37:01.416445958Z",
    "Path": "python3",
    "Args": [],
    "State": {
        "Status": "running",
        "Running": true,
        "Paused": false,
        "Restarting": false,
        "OOMKilled": false,
        "Dead": false,
        "Pid": 1314,
        "ExitCode": 0,
        "Error": "",
        "StartedAt": "2015-12-29T03:37:01.516253705Z",
        "FinishedAt": "0001-01-01T00:00:00Z"
    },
    "Image": "19697c9b5c7561b113d817821280971f063ea0187c82343c0832348fb6863c9a",
    "ResolvConfPath": "/mnt/sda1/var/lib/docker/containers/7d3d338891aae32e001a3bb31d6be17802d238526830396472b011599a97212a/resolv.conf",
    "HostnamePath": "/mnt/sda1/var/lib/docker/containers/7d3d338891aae32e001a3bb31d6be17802d238526830396472b011599a97212a/hostname",
    "HostsPath": "/mnt/sda1/var/lib/docker/containers/7d3d338891aae32e001a3bb31d6be17802d238526830396472b011599a97212a/hosts",
    "LogPath": "/mnt/sda1/var/lib/docker/containers/7d3d338891aae32e001a3bb31d6be17802d238526830396472b011599a97212a/7d3d338891aae32e001a3bb31d6be17802d238526830396472b011599a97212a-json.log",
    "Name": "/dynamo",
    "RestartCount": 0,
    "Driver": "aufs",
    "ExecDriver": "native-0.2",
    "MountLabel": "",
    "ProcessLabel": "",
    "AppArmorProfile": "",
    "ExecIDs": null,
    "HostConfig": {
        "Binds": [
            "/Users/dave/Sites/davesrepo/dynamo:/var/dynamo"
        ],
        "ContainerIDFile": "",
        "LxcConf": [],
        "Memory": 0,
        "MemoryReservation": 0,
        "MemorySwap": 0,
        "KernelMemory": 0,
        "CpuShares": 0,
        "CpuPeriod": 0,
        "CpusetCpus": "",
        "CpusetMems": "",
        "CpuQuota": 0,
        "BlkioWeight": 0,
        "OomKillDisable": false,
        "MemorySwappiness": -1,
        "Privileged": false,
        "PortBindings": {
            "8001/tcp": [
                {
                    "HostIp": "",
                    "HostPort": "8001"
                }
            ]
        },
        "Links": null,
        "PublishAllPorts": false,
        "Dns": [],
        "DnsOptions": [],
        "DnsSearch": [],
        "ExtraHosts": null,
        "VolumesFrom": null,
        "Devices": [],
        "NetworkMode": "default",
        "IpcMode": "",
        "PidMode": "",
        "UTSMode": "",
        "CapAdd": null,
        "CapDrop": null,
        "GroupAdd": null,
        "RestartPolicy": {
            "Name": "no",
            "MaximumRetryCount": 0
        },
        "SecurityOpt": null,
        "ReadonlyRootfs": false,
        "Ulimits": null,
        "LogConfig": {
            "Type": "json-file",
            "Config": {}
        },
        "CgroupParent": "",
        "ConsoleSize": [
            0,
            0
        ],
        "VolumeDriver": ""
    },
    "GraphDriver": {
        "Name": "aufs",
        "Data": null
    },
    "Mounts": [
        {
            "Source": "/Users/dave/Sites/davesrepo/dynamo",
            "Destination": "/var/dynamo",
            "Mode": "",
            "RW": true
        }
    ],
    "Config": {
        "Hostname": "7d3d338891aa",
        "Domainname": "",
        "User": "",
        "AttachStdin": false,
        "AttachStdout": false,
        "AttachStderr": false,
        "ExposedPorts": {
            "8001/tcp": {}
        },
        "Tty": true,
        "OpenStdin": false,
        "StdinOnce": false,
        "Env": [
            "APP_ENV=development",
            "PYTHONPATH=$PYTHONPATH:/var/dynamo",
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "LANG=C.UTF-8",
            "PYTHON_VERSION=3.5.1",
            "PYTHON_PIP_VERSION=7.1.2"
        ],
        "Cmd": [
            "python3"
        ],
        "Image": "davesrepo/dynamo",
        "Volumes": null,
        "WorkingDir": "/var/dynamo",
        "Entrypoint": null,
        "OnBuild": null,
        "Labels": {},
        "StopSignal": "SIGTERM"
    },
    "NetworkSettings": {
        "Bridge": "",
        "SandboxID": "71d99a7d11908a9d1c0156fd33eb3f0ff5ef9f6697bb77103fe2caa1cf488530",
        "HairpinMode": false,
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "Ports": {
            "8001/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "8001"
                }
            ]
        },
        "SandboxKey": "/var/run/docker/netns/71d99a7d1190",
        "SecondaryIPAddresses": null,
        "SecondaryIPv6Addresses": null,
        "EndpointID": "1cc99b0de89700368f31b43248c90ea45cec756712a2bd2ba2dc57293a5d0a72",
        "Gateway": "172.17.0.1",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "IPAddress": "172.17.0.2",
        "IPPrefixLen": 16,
        "IPv6Gateway": "",
        "MacAddress": "02:42:ac:11:00:02",
        "Networks": {
            "bridge": {
                "EndpointID": "1cc99b0de89700368f31b43248c90ea45cec756712a2bd2ba2dc57293a5d0a72",
                "Gateway": "172.17.0.1",
                "IPAddress": "172.17.0.2",
                "IPPrefixLen": 16,
                "IPv6Gateway": "",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "MacAddress": "02:42:ac:11:00:02"
            }
        }
    }
}
]

Docker-Version ist 1.9.1

20
digitaldavenyc

Docker & Virtualbox scheinen ein Problem beim Mounten eines Volumes außerhalb des Verzeichnisses/Users zu haben. Die einzige Möglichkeit, das Problem zu beheben, besteht darin, das Docker-Image zu löschen, das Verzeichnis/Users/yourname als Freigabeordner in Virtualbox festzulegen und ein neues Docker-Image zu erstellen.

Schritte zum Beheben des Problems:

  1. docker-machine stop dev
  2. docker-machine rm dev
  3. docker-machine create --driver virtualbox dev
  4. eval "$(docker-machine env dev)"
  5. docker build -t davesrepo/dynamo -f ./Dockerfile .
  6. docker run -v $(pwd):/var/dynamo -d -t -p 8001:8001 --env-file ./dynamo.env --name dynamo davesrepo/dynamo
  7. docker exec -it dynamo /bin/bash
  8. ls

[email protected]:/var/dynamo# lsDockerfile README.md __init__.py __pycache__ bin config.ini requirements.txt seed.sql tests

Dateien!

15
digitaldavenyc

Es ist sehr seltsam. Ich habe versucht, dieses Problem mit meinem docker 1.6.0 zu überprüfen, also habe ich ein ähnliches Bild für Sie erstellt:

FROM ubuntu:utopic
WORKDIR /var/dynamo
EXPOSE 8001

Dann habe ich die $(pwd) an den Container angehängt und ich konnte Dateien zwischen dem Host-Dateisystem und dem Container austauschen:

➜  ololo  echo $(pwd)                                                                       
/tmp/ololo
➜  ololo  ls         
Dockerfile  kikiboi
➜  ololo  docker run --rm -it -v $(pwd):/var/dynamo volume_issue bash
[email protected]:/var/dynamo# ls
Dockerfile  kikiboi
[email protected]:/var/dynamo# touch container_file
[email protected]:/var/dynamo# exit
➜  ololo  ls
container_file  Dockerfile  kikiboi

Sie müssen auch sicherstellen, dass /Users/dave/Sites/davesrepo/dynamo auf Ihrem Host und /var/dynamo in Ihrem Container dieselbe inode-Nummer haben. Verwenden Sie stat für dieses Dienstprogramm:

➜  ~  stat -c %i /tmp/ololo
1835031
➜  ~  docker run --rm -it -v /tmp/ololo:/var/dynamo ubuntu:utopic stat -c %i /var/dynamo
1835031
2
Vitaly Isaev

ich hatte das gleiche Problem und konnte online keine Lösung finden. Schließlich fand ich heraus, dass ich mein Windows-Kennwort geändert habe und Docker Windows-Berechtigungsnachweise zum Einhängen von Volumes benötigt Eine mögliche Lösung für diejenigen, die wie ich einige Tage im Leere verloren haben

2
roy