Jenkins Pipeline拉取Docker镜像创建容器失败问题排查
Jenkins Pipeline Docker操作错误分析与修正
错误原因
你误用了Docker命令:docker build是用来从Dockerfile构建新镜像的,它需要传入Dockerfile所在的本地路径,而不是已经拉取到本地的镜像名。这就是报错提示找不到路径的原因——它把镜像名当成了本地目录路径去查找,自然找不到。
要基于已拉取的镜像创建容器,你应该使用docker run命令。
修正后的Pipeline代码
pipeline { agent any stages { stage('Pull Images') { steps { sh 'docker pull dummy/new-repo:image1' sh 'docker pull dummy/new-repo:image2' sh 'docker pull dummy/new-repo:image3' } } stage('Create Containers') { steps { # -d 参数让容器后台运行,--name 给容器指定唯一名称避免冲突 sh 'docker run -d --name container1 dummy/new-repo:image1' sh 'docker run -d --name container2 dummy/new-repo:image2' sh 'docker run -d --name container3 dummy/new-repo:image3' } } } }
额外说明
- 如果不需要容器后台运行,去掉
-d参数即可; - 如果需要端口映射(比如把容器内80端口映射到宿主机8080),可以添加
-p 8080:80参数; - 如果需要挂载宿主机目录到容器内,添加
-v /host/path:/container/path参数; - 若要避免重复创建同名容器,可以在
docker run前先执行docker rm -f container1(强制删除已有容器),或者用docker run --rm让容器停止后自动删除。
内容的提问来源于stack exchange,提问作者Caveira
相关产品推荐
相关产品推荐

