我在docker swarm中部署了Jenkins和Nexus。Jenkins有一个docker,配置为通过套接字访问主机docker。
volumes:
- /var/run/docker.sock:/var/run/docker.sock这个设置允许在部署在docker swarm上的jenkins中使用docker,并且运行良好。
然而,当我尝试使用docker容器构建jenkins管道,并随后尝试访问nexus库时,我会遇到问题。基本上,swarm with jenkins部署在无法从jenkins管道使用的容器访问的覆盖网络中。
Docker网络如下所示:
docker network ls:
...
wzr8yyx6hki1 ci-cd-network overlay swarm
..示例jenkins管道演示过程:
pipeline {
agent none
triggers { pollSCM('H/15 * * * *') }
environment {
NODE_IMAGE = 'node:6'
}
stages {
stage('Checkout') {
agent any
steps {
/*generated with jenkins syntax generator*/
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@bitbucket.org:code/project.git']]])
}
}
stage('Static code check (run lint)') {
agent {
docker { image '${NODE_IMAGE}' }
}
steps {
sh 'npm install'
sh 'npm run lint:ts'
}
}
stage('Unit Test') {
agent {
docker { image '${NODE_IMAGE}' }
}
steps {
sh 'npm install'
sh 'npm publish'
}
}
}
}由jenkins管道进程创建的容器无法访问swarm使用的网络“”ci-cd- network“”中包含nexus和jenkins计算机的nexus服务。“”基本上,可以从docker群中部署的另一个docker服务(即“ping nexus”)访问nexus,但是不能从我的“node”容器访问,该容器只是作为容器单独运行(而不是在swarm中)?你知道如何让nexus服务对“node”容器“可见”吗?
发布于 2017-10-27 20:16:41
您可以将jenkins内部创建的代理容器附加到覆盖网络,然后容器将能够相互通信。
agent {
docker {
image '${NODE_IMAGE}'
args '--network ci-cd-network'
}
}https://stackoverflow.com/questions/46974354
复制相似问题