Docker 容器在手动运行容器时可由 localhost 访问,但在由 jenkinsfile 运行时无法访问
Posted
技术标签:
【中文标题】Docker 容器在手动运行容器时可由 localhost 访问,但在由 jenkinsfile 运行时无法访问【英文标题】:Docker container accessible to localhost when container is runned manually but not when runned by a jenkinsfile 【发布时间】:2021-12-10 00:33:38 【问题描述】:我在 PORT:8084 上暴露的容器上运行 Spring Boot 应用程序。 图像被推送到 docker hub 然后我在 Jenkinsfile 上有这个脚本,它在容器上运行图像:
stage('Deploying the image into a container')
steps
echo "Installing the app "
sh 'docker run $imagename:$BUILD_NUMBER -p 8084:8084 -d --name $dockerImage '
在 'localhost:8084' 上无法访问应用程序,容器已启动并且在运行时 docker-ps
:
33f8cb4d98e6 28609002/time_sheet_dev_ops:38 "java -jar time_shee…" 29 minutes ago Up 3 seconds 8084/tcp focused_merkle
但是当我在终端中手动运行图像时,可以访问该应用程序:
docker run -d -p 8084:8084 imagename
运行docker ps
时:
50715adaa50c 28609002/time_sheet_dev_ops:latest "java -jar time_shee…" 8 seconds ago Up 7 seconds 0.0.0.0:8084->8084/tcp, :::8084->8084/tcp distracted_shamir
唯一的区别在于端口输出,我尝试在运行命令中添加-b 0.0.0.0
,还尝试通过“127.0.0.1:8084”和许多其他解决方案访问应用程序,但似乎没有任何东西可以使它在 CI/ 中工作CD流水线
【问题讨论】:
【参考方案1】:尝试run
之后和image
之前的选项。
这里是docker run --help
输出:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
所以,正确的命令:
sh 'docker run -p 8084:8084 -d --name $dockerImage $imagename:$BUILD_NUMBER'
【讨论】:
以上是关于Docker 容器在手动运行容器时可由 localhost 访问,但在由 jenkinsfile 运行时无法访问的主要内容,如果未能解决你的问题,请参考以下文章
如何在 docker 中以非 root 用户身份写入卷容器?