虽然一般不推荐在 Docker 内部运行 Docker,但也有一些合法的用例,比如 Docker 本身的开发,k8s动态slave打包镜像等

    镜像下载:
    https://hub.docker.com/_/docker

    用法:

    1. docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock docker:18.09.7 sh
    2. docker login
    3. 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配置
    image.png
    image.png
    image.png