0

Jenkins Web サイトの公式チュートリアルに従っています。Jenkinsfileチュートリアルに従ってパイプラインを実行している blueocean Docker コンテナーがあります。

pipeline {
    agent {
        docker {
            image 'node:6-alpine' 
            args '-p 3000:3000' 
        }
    }
    stages {
        stage('Build') { 
            steps {
                sh 'npm install' 
            }
        }
    }
}

問題は、Docker イメージをプルしようとすると、パイプラインが失敗することです。

[ode-js-react-npm-app_master-6PEWX3VWDA4SAdDMJA4YKJCZSABJSAQCSGVYMKHINXGDDJLA] Running shell script
+ docker pull node:6-alpine
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
script returned exit code 1

いくつかのトラブルシューティングの後、Jenkins がホストではなく Docker コンテナー自体をプルしようとしているため、これが失敗していることに気付きました。これは私が望んでいるものではなく、実際のドキュメントには次のように記載されています。

このイメージ パラメーター (エージェント セクションの docker パラメーターの) は、node:6-alpine Docker イメージをダウンロードし (マシンでまだ利用できない場合)、このイメージを別のコンテナーとして実行します。これは、次のことを意味します: Docker でローカルに実行されている個別の Jenkins コンテナーと Node コンテナーを用意します。Node コンテナーは、Jenkins が Pipeline プロジェクトを実行するために使用するエージェントになります。ただし、このコンテナーは短命です。その寿命は、パイプラインの実行期間のみです。

私が間違っていることと、Node.js Docker イメージがローカル マシンではなく Jenkins 内でプルされようとする理由を誰かが説明できますか? アプリを調整する Nodejs コンテナーとは別の Jenkins コンテナーが必要です。

4

1 に答える 1