虽然一般不推荐在 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 shdocker logindocker 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配置


