虽然一般不推荐在 Docker 内部运行 Docker,但也有一些合法的用例,比如 Docker 本身的开发,k8s动态slave打包镜像等
镜像下载:
https://hub.docker.com/_/docker
用法:
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock docker:18.09.7 sh
docker login
docker pull
实战:
k8s动态slave构建,编译打包上传镜像,pipeline如下:
node("jenkins_slave_k8s"){
stage("clone code"){
echo "1.Clone Stage"
dir ("cmms"){
git branch: '${BRANCH}', credentialsId: "${credentialsId}", url: '${GIT_REPOSITORY}'
}
script {
// 获取git提交的hash值做为docker镜像tag
GIT_TAG = "latest_${BUILD_NUMBER}"
// 组装成完整地址
DOCKER_REPOSITORY_TAG = "${DOCKER_REPOSITORY}:${GIT_TAG}"
}
}
stage("build"){
sh """
echo '============= start building source code and packaging =============='
ls
echo '${DOCKER_REPOSITORY_TAG}'
"""
}
stage("push"){
script{
container('docker'){
sh "docker login --username=${DOCKER_USERNAME} --password=${DOCKER_PWD} ${DOCKER_HOST}"
}
}
}
}
k8s配置