容器运行时
Posted L&P Essay
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了容器运行时相关的知识,希望对你有一定的参考价值。
1. 容器运行时
定义: 容器本身就是一个进程,那么在方便用户对其进行管理的软件就是容器运行时。
-
比较火的容器运行时就是Docker,之后又增加了containerd、runc等组件。
-
图1
-
当收到创建容器的指令之后,会由docker-daemon->containerd->containerd-shim->runC创建,runC创建完之后就会退出。
感谢关注
Docker 容器在手动运行容器时可由 localhost 访问,但在由 jenkinsfile 运行时无法访问
【中文标题】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 运行时无法访问