我是新来的Docker,所以这可能是一个明显的问题,我只是没有使用正确的搜索词来找到答案,所以我道歉,如果是这样的话。
我正尝试使用专门构建的容器来建立新的CI/CD管道。到目前为止,我一直在使用其他人的容器,但我需要对可用依赖项进行更多控制,因此我需要自己的容器。为此,我构建了一个容器(Ubuntu),并且我有一个本地(host)目录中的依赖项,另一个目录中的是我正在构建的项目,两者都使用Docker Volumes(-v选项)连接到容器,如下所示。
docker run --name buildbox \
-v /projectpath:/home/project/ \
-v /dependencies:/home/libs \
buildImage buildScript.sh
由于这个目录最终会保存在Docker repo中,并由GitLabCI/CDPipeline访问,我希望将依赖项目录存储在一个尽可能小的容器中,这样我就可以将其与Ubuntu构建容器一起推送到Docker repo中。(--volumes-from),并使用-v选项Map要构建的项目;例如:
docker run --name buildbox \
-v /projectpath:/home/project/ \
--volumes-from depend_vol \
buildImage buildScript.sh
因此,我从Docker存储库中取出buildImage和depend_vol,运行buildImage,同时将依赖项容器和项目目录作为卷附加,然后运行构建脚本(并在完成后提取构建工件)。我希望将它们分开的原因是,如果我想创建使用公共库的不同构建容器,或者如果我想创建版本特定的依赖性容器而不存储完整的操作系统(我对此有计划)。
现在,我可以启动一个轻量级的通用容器(如busybox),并将所有内容复制到其中,但我想知道是否有一种简单的方法来连接卷,然后在容器关闭时将内容存储在映像中。
但是我想把我的本地主机依赖项目录存储在一个容器中。有没有一种直接的方法可以做到这一点?我是否错过了一些明显的东西?
1条答案
按热度按时间tzdcorbm1#
因此,这是可行的,如果不是我所希望的,因为我仍然在做大量的文件复制(只是用tarball)。
就这样。然后推到回收站。
要使用它,请拉取存储库,然后启动数据卷:
然后启动将要引用数据卷(projLib)的容器(projBuild)。
好像有用。