经过一些试验,我发现了问题的原因。关键操作是尝试在 本身 运行在Docker桥接网络中的Docker容器内创建Docker桥接网络(使用docker network create
或testcontainersNetwork
对象)。如果执行此操作,则不会从Docker收到错误消息,Docker守护程序日志文件也不会包含任何有用的消息。但是尝试使用网络将导致“没有通往主机的路由”。 __
通过让最外面的Docker容器(Jenkins代理)访问主机网络,使Jenkins提供了--network="host"
对其docker run
命令的选项,我解决了该问题:
pipeline {
agent {
dockerfile {
filename 'Dockerfile.jenkinsAgent'
additionalBuildArgs ...
args '-v /var/run/docker.sock:/var/run/docker.sock ... --network="host" -u jenkins:docker'
}
}
stages {
...
可以,因为Jenkins代理不需要桥接网络提供的隔离级别。