gpt4 book ai didi

docker - 制作一个依赖容器并将其卷安装在其他容器上

转载 作者:行者123 更新时间:2023-12-02 19:29:09 32 4
gpt4 key购买 nike

我有一个问题,我的容器变得太重并且其中许多具有许多相同的依赖项。

我想制作一个基本容器,它将安装并保存所有依赖项,然后让其他容器指向该基本容器上的依赖项目录(使用卷)。

我试图对此做一个小的 POC,我首先尝试让一个容器安装 python 包,然后另一个容器使用该模块运行 python 脚本。

我想我将在主机中创建一个目录,该目录将安装在所有容器上,并将包含所需的所有数据和依赖项。

我应该注意,我不能使用 docker compose,即使这可能更好。

这是我的基本容器的 Dockerfile:

FROM python:3.6-slim

RUN apt-get update && apt-get install -y vim

RUN pip install --install-option="--prefix=/volumes/shared/dependencies" deepdiff

CMD tail -f /dev/null

可以看到 pip 会安装到 /volumes/shared/dependencies目录

我这样运行它:
docker build -t base_container .
docker run -ti -v "$PWD/shared/base_dependencies":/volumes/shared/dependencies base_container

现在如果我进入容器到 /volumes/shared/dependencies我看到了我放在主机目录中的文件,但没有看到安装的包。另一方面,如果主机目录为空,我会看到已安装的包。

我还尝试应用 2 个卷(一个用于进入的文件,一个用于容器将创建的文件)

在这种情况下,我怎样才能获得双向音量,解释为什么会发生这种情况也很好。

最佳答案

当你这样做 docker run使用卷,如果它不存在,它将首先在您的主机上创建目录,然后挂载卷,从而读取它。所以事情是,容器中的目标目录将被主机上的目标目录替换,从而导致一个空目录。

只需在“运行时”复制依赖项,您就不再需要 tail -f 的容器了

FROM python:3.6-slim

RUN apt-get update && apt-get install -y vim

RUN pip install --install-option="--prefix=/temp" deepdiff

CMD cp -pr /temp /volumes/shared/dependencies

关于docker - 制作一个依赖容器并将其卷安装在其他容器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53324081/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com