如何使用未在群中部署的docker容器访问docker群的服务?

我在docker群中部署了Jenkins和Nexus。 jenkins有一个dockerconfiguration为通过套接字访问主机docker。

volumes: - /var/run/docker.sock:/var/run/docker.sock 

这个设置允许在Docker群中部署jenkins里面的docker,这个工作正常。

我面临的问题,但是当我试图build立与docker集装箱jenkinspipe道,随后试图访问nexus存储库。 基本上jenkins的群集被部署在覆盖networking内,而jenkinspipe道使用的容器无法访问覆盖networking。

Dockernetworking如下所示:

 docker network ls: ... wzr8yyx6hki1 ci-cd-network overlay swarm .. 

样品jenkinspipe道演示过程:

 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' } } } } 

jenkinspipe道进程创build的容器不能访问swarm中包含nexus和jenkins机器的networking“ci-cd-network”内的nexus服务。 基本上,nexus服务可以从docker swarm('ping ping nexus')中部署的另一个docker服务访问,但是不能从我的'node'容器访问,它仅仅作为容器单独运行(不在群集中)? 任何想法如何使联结服务“可见”的“节点”容器?

您可以将jenkins中创build的代理容器附加到覆盖networking,然后容器将能够相互通信。

 agent { docker { image '${NODE_IMAGE}' args '--network ci-cd-network' } }