나는 Jenkins와 Nexus를 docker swarm에 배치했습니다. Jenkins는 소켓을 통해 호스트 도커에 액세스하도록 구성된 도커를 보유하고 있습니다.득점 기계에 배치되지 않은 도커 컨테이너를 사용하여 도커 웜에서 서비스에 액세스하는 방법은 무엇입니까?
volumes:
- /var/run/docker.sock:/var/run/docker.sock
이 설정을 사용하면 docker swarm에 배포 된 jenkins 내부의 docker를 사용할 수 있으며 정상적으로 작동합니다.
그러나 나는 docker 컨테이너로 jenkins 파이프 라인을 만들고 이후에 nexus 저장소에 액세스하려고 할 때 문제가 있습니다. 기본적으로 jenkins와 함께 뭉치는 것은 jenkins 파이프 라인에서 사용되는 컨테이너에서 액세스 할 수없는 오버레이 네트워크 내에 배포됩니다.
는도커 네트워크는 다음과 같습니다
docker network ls:
...
wzr8yyx6hki1 ci-cd-network overlay swarm
..
샘플 젠킨스 파이프 라인 시연 과정 : 젠킨스 파이프 라인 프로세스에 의해 작성
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: '[email protected]: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'
}
}
}
}
컨테이너 네트워크 'CI-CD-네트워크'에서 넥서스 서비스에 액세스 할 수 없습니다 군대에 의해 사용되며 넥서스와 젠킨스 기계가 포함됩니다. 기본적으로 nexus 서비스는 도커 웜 (즉, ping nexus)에 배포 된 다른 도커 서비스에서 액세스 할 수 있지만 간단히 컨테이너로 별도로 실행되는 '노드'컨테이너에서 액세스 할 수는 없습니다 (떼로는 안 함)? 넥서스 서비스를 '노드'컨테이너에 '표시'하는 방법을 알려주세요.