代码之家  ›  专栏  ›  技术社区  ›  Shiva

Docker找不到文件

  •  0
  • Shiva  · 技术社区  · 6 年前

    尝试执行以下命令时出错

     docker run --rm -v /home/docker:/build ethereum/solc:stable /build/TransactionFee.sol --bin --abi --optimize -o /build
    

    错误是

    找不到“/users/amidala/projects/transactionfee.sol”。

    文件已存在:

    amidalas-MacBook-Pro:projects amidala$ ls -ltr build/ docker/ TransactionFee.sol
    -rwxr-xr-x  1 amidala  staff  730 Dec 10 23:46 TransactionFee.sol
    
    docker/:
    
    build/:
    amidalas-MacBook-Pro:projects amidala$ docker run --rm -v /Users/amidala/projects/docker:/Users/amidala/projects/build ethereum/solc:stable /Users/amidala/projects/TransactionFee.sol --bin --abi --optimize -o /Users/amidala/projects/build
    "/Users/amidala/projects/TransactionFee.sol" is not found.
    amidalas-MacBook-Pro:projects amidala$ 
    

    如你所见,文件存在

    enter image description here

    用户 已经共享

    enter image description here

    我错过什么了吗?

    我在看这篇文章 Intro to Blockchain

    2 回复  |  直到 6 年前
        1
  •  1
  •   michalhosna    6 年前

    在你的命令中:

    docker run --rm \
        -v /User/amidala/projects/docker:/Users/amidala/projects/build \
        etherun/solc:stable \
        /User/amidala/projects/TransactionFee.sol \
        --bin --abi --optimize -o /Users/amidala/projects/build
    

    你告诉Docker挂载你的本地文件夹 /User/amidala/projects/docker 到容器文件夹 /Users/amidala/projects/build (那就是 -v 论证) . 所以在文件夹中 /Users/amidala/projects 容器内只有Docker文件夹,没有其他内容。没有transactionfee.sol文件。

    你可能想坐 /User/amidala/projects 文件夹到容器 /用户/阿米达拉/项目 . 所以整个 projects 文件夹可用于容器。

    docker run --rm \
        -v /User/amidala/projects:/User/amidala/projects \
        etherun/solc:stable \
        /User/amidala/projects/TransactionFee.sol \
        --bin --abi --optimize -o /Users/amidala/projects/build
    

    PS:在容器中使用与IO相同的文件夹结构,主机有利于简化,但不利于确定要引用的文件夹。

    有关于卷和安装的整个Docker文档页面: https://docs.docker.com/storage/volumes/

        2
  •  1
  •   Paulo Pedroso    6 年前

    Michal Ho_na的回答是准确的。但我会保持容器文件夹结构不变。试运行:

    docker run --rm -v /Users/amidala/projects/docker:/build ethereum/solc:stable /build/TransactionFee.sol --bin --abi --optimize -o /build
    

    可能容器期望在build文件夹中发生事情,并且在运行生成时可能会出现其他错误。