我在 Docker 中运行 Docker(特别是运行 Jenkins,然后运行 Docker 构建器容器来构建项目映像,然后运行这些容器,然后运行测试容器)。
这是 jenkins 镜像的构建和启动方式:
docker build --tag bb/ci-jenkins .
mkdir $PWD/volumes/
docker run -d --network=host \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
-v $PWD/volumes/jenkins_home:/var/jenkins_home \
--name ci-jenkins bb/ci-jenkins
詹金斯工作正常。但是有一个Jenkinsfile
基础的工作,它运行这个:
docker run -i --rm -v /var/jenkins_home/workspace/forkMV_jenkins-VOLTRON-3057-KQXKVJNXOU4DGSUG3P27IR3QEDHJ6K7HPDEZYN7W6HCOTCH3QO3Q:/tmp/build collab/collab-services-api-mvn-builder:2a074614 mvn -B -T 2C install
这最终会出现错误:
您指定的目标需要执行项目,但此目录 (/tmp/build) 中没有 POM。
当我docker exec -it sh
对容器进行操作时,它/tmp/build
是空的。但是当我在 Jenkins 容器中时,该路径/var/jenkins_home/...QO3Q/
存在并且它包含所有已签出并准备好的文件的工作区。
所以我想知道 - Docker 如何愉快地安装卷然后它是空的?*
更令人困惑的是,此设置适用于我在 Mac 上的同事。我在 Linux、Ubuntu 17.10、Docker 最新版本上。