装载卷以共享文件中docker容器的结果

装载卷以共享文件中docker容器的结果,docker,jenkins-pipeline,dockerfile,Docker,Jenkins Pipeline,Dockerfile,我的问题是: 我有一个共享文件夹emptyDirVolumemountPath:“/home”,内存:false 我在docker文件中运行自动测试,这些测试被保存到docker容器主目录中的一个文件夹中。我想做的是与容器节点共享该目录,以将结果上载到另一个带有gsutils的容器 我正在做的是docker run-v/home:/home/tests,但是节点容器主目录是空的。我在本地测试了我的dockerfile并且正在工作,这是可行的吗 我将发布Jenkins文件和dockerfile的代

我的问题是:

我有一个共享文件夹emptyDirVolumemountPath:“/home”,内存:false

我在docker文件中运行自动测试,这些测试被保存到docker容器主目录中的一个文件夹中。我想做的是与容器节点共享该目录,以将结果上载到另一个带有gsutils的容器

我正在做的是docker run-v/home:/home/tests,但是节点容器主目录是空的。我在本地测试了我的dockerfile并且正在工作,这是可行的吗

我将发布Jenkins文件和dockerfile的代码

詹金斯档案:

DOCKERFILE

有人知道吗


谢谢

问题与在Kubernetes管理的容器内执行jenkins管道阶段时使用docker deamon有关

使用docker run时,您拥有的docker deamon就是主机上的docker deamon,如下所述:

hostPathVolume(mountPath: '/usr/bin/docker', hostPath: '/usr/bin/docker'),
hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'),
因此,当您使用卷映射-v/home:/home/tests时,将使用主机的目录/home,而不是kubernetes插件创建的容器的/home目录

要解决此问题,可以执行以下两种操作之一:

在正在执行管道阶段的kubernetes托管容器内配置不同的docker deamon。 将同一目录映射为可在docker run和kubernetes容器上访问。 第二个选项似乎更简单,可以通过以下方式实现:

向kubernetes podTemplate添加新的卷映射:hostPathVolumemountPath:“/home/tests”,hostPath:“/tmp/tests”, 运行容器时使用相同的目录:docker run-v/tmp/tests:/home/tests 玩得开心

FROM gcr.io/xyz

# Create app directory
RUN mkdir -p /usr/opt/hold-ats
WORKDIR /usr/opt/hold-ats

COPY package* ./

RUN npm install

COPY src src

RUN mkdir -p /home/tests

CMD ["./node_modules/.bin/newman", "run", "src/collections/smoke_tests.json", "-e",  "src/environments/dev.json", "--reporter-htmlextra-export", "/home/tests" ,"--reporter-htmlextra-darkTheme", "--reporter-htmlextra-testPaging", "-r", "htmlextra"]
hostPathVolume(mountPath: '/usr/bin/docker', hostPath: '/usr/bin/docker'),
hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'),