【问题标题】:Docker mount only works in interactive modeDocker mount 只能在交互模式下工作
【发布时间】:2021-05-25 08:45:23
【问题描述】:

我是 Docker 新手,我正在尝试使用 run 命令的挂载选项,但它们在我的 linux 环境中不起作用。

我有一个名为 transformer 的可执行文件,其目的是从名为 txts 的目录中获取一个 txt 文件,将其转换为 python 文件并将该文件保存到另一个目录中称为dict。 在这两个文件夹之上,我还有第三个(lib),其中包含启动转换器所需的库。

所以我的项目文件夹的结构是这样的:

* folder txts
 |
 |__ myfile.txt
* folder dict
* folder lib <contains some cpp libraries>
* executable transformer
* Dockerfile
Path to this directory: /home/ec2-user/MyDockerTests/transformerproject/

运行转换器需要启动以下命令:

./transformer -d <path to the txt file> -o <path where you want to save the newly created python file>

有了这个,我尝试在 Docker 容器中运行该进程。

Dockerfile:

FROM alpine
FROM gcc

COPY . /usr/project/

ENV LD_LIBRARY_PATH=/usr/project/lib

WORKDIR /usr/project/

CMD ./transformer -d txts/myfile.txt -o dict/mytransformedfile.py

我用它构建了一个名为 transformercontainer

的图像
docker build --tag transformercontainer .

但是,显然,容器运行,执行它的操作,之后立即停止并且我没有我的 python 文件,所以下一步是将容器的 dict 文件夹链接到主机的 dict 文件夹。这就是我一直失败的地方。

我启动以下命令:

docker run -v /home/ec2-user/MyDockerTests/transformerproject/dict/:/usr/project/dict/ transformercontainer

python 文件没有出现在我的主机 dict 文件夹中。

然后我所做的是尝试通过以交互模式运行它来手动启动容器内的转换器可执行文件

docker run -it -v /home/ec2-user/MyDockerTests/transformerproject/dict/:/usr/project/dict/ transformercontainer

此时我运行了 与我直接在 Dockerfile 的 CMD 部分中编写的完全相同的命令,现在我不仅可以清楚地看到,在容器内部,现在填充了 dict 文件夹使用新的 python 文件,但是当我关闭容器时,我还可以在主机的 dict 文件夹中找到相同的 python 文件,所以目录挂载工作得很好。

显然我做错了什么,但经过无数次尝试后,我已经是最后一根稻草了。

【问题讨论】:

    标签: docker containers mounted-volumes


    【解决方案1】:

    除了CMD "./transformer -d txts/myfile.txt -o dict/mytransformedfile.py 中的引用之外,一切似乎都很好

    请尝试: CMD ./transformer -d txts/myfile.txt -o dict/mytransformedfile.py

    【讨论】:

    • 在 docker 交互模式下运行“transformers”命令之前是否浏览目录?
    • 不,我已经被带到了正确的目录,我想这意味着 WORKDIR 命令工作正常
    • 这可能是最后一件事,因为显然没有任何问题:) 删除引号拼写错误后,您是否从头开始构建图像?如果没有,那就试试吧。
    • 我也这样做了。删除已经“退出”的容器,删除图像,然后重新构建它。我刚刚读到除了CMD还有ENTRYPOINT命令,我也试试这个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多