在 jenkins 管道中获取容器 ID 时出错
Error getting container id in jenkins pipeline
我有一个管道脚本,我试图在其中 link 多个容器(自由容器、Oracle 容器和 Maven jdk 容器)。
首先我创建了 oracle 容器:
db = docker.build('oracle', 'docker/oracle').run("-p 49160:22 -p 49161:1521")
然后 link 它到我的 liberty 容器,它似乎工作正常:
wlp = docker.build('liberty', 'docker/liberty').run("-p 9080:9080 --link=${db.id}:oracle")
但是当我尝试 link 它给 maven 时:
mvn.inside('-v $M2_REPO:/m2repo --link=${db.id}:oracle ') {
我在 jenkins 中收到以下错误:
Failure: java.io.IOException: Failed to run image 'maven:3.3.9-jdk-8'.
Error: docker: Error response from daemon: Could not get container for
${db.id}. See '/usr/bin/docker-current run --help'.
这是否与它使用 inside
调用而不是 run
这一事实有关?
我不知道它是什么语言,但是 docker 构建在当前目录中查找文件 "Dockerfile"。所以
docker.build('oracle', 'docker/oracle')
有一些问题,因为它已经用 tag docker/oracle
构建了图像
你只需要运行这个图像不构建。
您的变量 ${db.id}
未在 管道 DSL 脚本 中被替换(或 groovy 说:interpolated),因为您正在使用单 引号。
将您的命令调整为使用双引号:
mvn.inside("-v $M2_REPO:/m2repo --link=${db.id}:oracle") {
我想你不想插入 $M2_REPO
,因此通过在 \
.
前面添加 转义
我有一个管道脚本,我试图在其中 link 多个容器(自由容器、Oracle 容器和 Maven jdk 容器)。
首先我创建了 oracle 容器:
db = docker.build('oracle', 'docker/oracle').run("-p 49160:22 -p 49161:1521")
然后 link 它到我的 liberty 容器,它似乎工作正常:
wlp = docker.build('liberty', 'docker/liberty').run("-p 9080:9080 --link=${db.id}:oracle")
但是当我尝试 link 它给 maven 时:
mvn.inside('-v $M2_REPO:/m2repo --link=${db.id}:oracle ') {
我在 jenkins 中收到以下错误:
Failure: java.io.IOException: Failed to run image 'maven:3.3.9-jdk-8'. Error: docker: Error response from daemon: Could not get container for ${db.id}. See '/usr/bin/docker-current run --help'.
这是否与它使用 inside
调用而不是 run
这一事实有关?
我不知道它是什么语言,但是 docker 构建在当前目录中查找文件 "Dockerfile"。所以
docker.build('oracle', 'docker/oracle')
有一些问题,因为它已经用 tag docker/oracle
构建了图像
你只需要运行这个图像不构建。
您的变量 ${db.id}
未在 管道 DSL 脚本 中被替换(或 groovy 说:interpolated),因为您正在使用单 引号。
将您的命令调整为使用双引号:
mvn.inside("-v $M2_REPO:/m2repo --link=${db.id}:oracle") {
我想你不想插入 $M2_REPO
,因此通过在 \
.