Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Docker卷未装入任何文件_Linux_Docker_Docker Compose - Fatal编程技术网

Linux Docker卷未装入任何文件

Linux Docker卷未装入任何文件,linux,docker,docker-compose,Linux,Docker,Docker Compose,我正在尝试将源文件装载到docker中位于/var/dynamo的目录中。我希望能够在本地运行Docker,并在工作时使用本地文件 使用run命令: docker run -v $(pwd):/var/dynamo -d -t -p 8001:8001 --name dynamo davesrepo/dynamo 使用我的Dockerfile FROM python:3.5.1 WORKDIR /var/dynamo RUN pip3 install tornado EXPOSE 8001

我正在尝试将源文件装载到docker中位于/var/dynamo的目录中。我希望能够在本地运行Docker,并在工作时使用本地文件

使用run命令:

docker run -v $(pwd):/var/dynamo -d -t -p 8001:8001 --name dynamo davesrepo/dynamo
使用我的Dockerfile

FROM python:3.5.1
WORKDIR /var/dynamo
RUN pip3 install tornado
EXPOSE 8001
但是,当我猛击容器
docker exec-it dynamo/bin/bash
并运行
ls-la
时,目录是空的

root@7d3d338891aa:/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 ..
运行
docker inspect dynamo
显示正确安装的目录

[
{
    "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版本是1.9.1,这很奇怪。我试图用我的
docker 1.6.0
检查这个问题,因此我创建了一个与您的类似的图像:

FROM ubuntu:utopic
WORKDIR /var/dynamo
EXPOSE 8001
然后,我将
$(pwd)
装载到容器中,并能够在主机文件系统和容器之间交换文件:

➜  ololo  echo $(pwd)                                                                       
/tmp/ololo
➜  ololo  ls         
Dockerfile  kikiboi
➜  ololo  docker run --rm -it -v $(pwd):/var/dynamo volume_issue bash
root@9b15875997ba:/var/dynamo# ls
Dockerfile  kikiboi
root@9b15875997ba:/var/dynamo# touch container_file
root@9b15875997ba:/var/dynamo# exit
➜  ololo  ls
container_file  Dockerfile  kikiboi
您还需要确保主机上的
/Users/dave/Sites/davesrepo/dynamo
和容器内的
/var/dynamo
具有相同的
inode
编号。使用
stat
实用程序执行以下操作:

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

我使用1.9,这很好:

Docker run  -d -t --restart=on-failure:3 -h docker_console -p 8880:80 -v ~/docker_console/var/www:/var/www --name docker_console repo/docker_console
它将主机上的
~/docker\u控制台/var/www
连接到容器中的
/var/www

如果使用的是目录名而不是变量,该怎么办?

Docker&Virtualbox似乎在/Users目录之外装载卷时遇到问题。解决此问题的唯一方法是删除docker机器映像,将/Users/yourname目录正确设置为Virtualbox中的共享文件夹,然后创建新的docker机器映像

解决此问题的步骤:

  • docker机器停止开发
  • docker机器rm-dev
  • docker机器创建--驱动程序virtualbox开发
  • eval“$(docker机器环境开发)”
  • docker build-t davesrepo/dynamo-f./Dockerfile.
  • docker run-v$(pwd):/var/dynamo-d-t-p8001:8001--env文件。/dynamo.env--name dynamo davesrepo/dynamo
  • docker exec-it dynamo/bin/bash
  • ls
  • root@42f9e47fa2de:/var/dynamo#ls
    Dockerfile README.md\uuuu init\uuuuuu.py\uuuuu pycache\uuuuuuu bin config.ini requirements.txt seed.sql测试


    文件

    您可能需要在
    Dockerfile
    中包含类似的内容,重要的是
    要指定容器中的值,则只有
    -v$(pwd):/var/dynamo
    才有效

    root@7d3d338891aa:/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 ..
    
    RUN mkdir -p /var/dynamo
    VOLUME /var/dynamo
    WORKDIR /var/dynamo
    

    我发现我更改了windows密码,docker需要windows凭据才能装载卷,您可以更新it设置>共享驱动器。

    检查您
    docker上下文
    :)我忘了将其更改回来

    $ docker context use default
    

    我的情况是win10 WSL ubuntu。我在ubuntu上安装了docker compose和docker引擎,在windows上安装了docker桌面。 原来,
    docker run-v$(pwd):
    命令必须在windows中。

    卷的源错误 没有别的办法,这很容易

    如果您运行
    docker inspect[containername]
    ,检查卷上的“装载”部分和
    源代码的设置是否正确,如下所示:(mongodb示例)

    “挂载”:[
    {
    “类型”:“体积”,
    “名称”:“b1cdd07ca4d5621eda77481824e5068194023f4407ed2674ec81a1573f2d0410”,
    “来源”:“/var/lib/docker/volumes/b1cdd07ca4d5621eda77481824e5068194023f4407ed2674ec81a1573f2d0410/_数据”,
    “目的地”:“/data/configdb”,
    “驱动程序”:“本地”,
    “模式”:“rw”,
    “RW”:没错,
    “传播”:”
    }
    ]
    
    手动设置 如卷的
    目标
    中所述,可以手动指定

    volumes:
      - type: bind
        source: ./volumes/mongodb
        target: /data/db
    
    希望能带来

    {
    “类型”:“绑定”,
    “来源”:“/home/username/app/backend/volumes/mongodb”,
    “目的地”:“/数据/db”,
    “模式”:“,
    “RW”:没错,
    “传播”:“rprivate”
    }
    
    或者您想得到什么?你在
    /var/dynamo
    中放了什么东西,它们就不见了吗?是的,我想把我的文件放在/var/dynamo中,但它们从来没有显示出任何帮助?那张票仍然有效,没有建议的解决方案可以解决我的问题。我已经找到了一个没有降级的解决方案。你能澄清什么是stat实用程序以及如何找到inode吗?也许这是Docker新版本的问题。我使用的是1.9.1版,在您的示例中,您正在docker中创建一个文件以与主机共享。我没有尝试将文件从docker共享到主机。。。。相反,从主持人到码头工人。要在开发过程中查看更改。@digitaldavenyc我也在做同样的事情:您可以看到
    /tmp/ololo
    (主机)中的文件仍然存在于
    /var/dynamo
    文件夹(容器)中。可能您真的需要降级
    docker
    。我们将
    1.6
    1.7
    Centos 6
    一起使用。一切都是OK@digitaldavenyc你能在GitHub上打开一个问题吗?自docker 1.6以来,主机目录的装载(允许它们位于boot2docker的
    /Users
    中)不应该发生变化,我们还没有关于这方面的报告,因此我有兴趣对此进行研究。可能是在你的设置中。我不认为降级到旧版本应该是解决办法。我相信你已经找到了问题的原因:Virtualbox中的文件夹共享限制是根本原因。但是,这里创建机器的方式与共享不起作用时创建机器的方式有什么不同?如何“将/Users/yourname目录正确设置为共享文件夹”?或者,您如何不正确设置共享文件夹?当我最初设置Docker时,我将文件放在/var/dynamo中。这显然在OSX用户目录之外,据我所知,这是Virtualbox的默认设置。通过打开Virtualbox,单击docker VM的“设置”并选择“共享文件夹”,可以正确设置文件。从那里,您可以双击机器文件夹并更改路径。信息技术