2016-05-17 17 views
2

Dockerコンテナ内でJenkinsインスタンスを実行していて、BitBucketリポジトリに接続しています。オンラインリポジトリ上で何かが変わると、Jenkinsは新しいソースをダウンロードします。新しいソースに基づいて、私は新しいDockerイメージを作成したいが、それはDockerがインストールされている場所であるため、ホスト上で実行する必要がある。Dockerコンテナ内でJenkinsを実行しているときにホスト上に構築する方法は?

私はホスト上で何かを走らせることができるのか分かりませんでしたが、同時にDockerがプロセスを分離するために使用されていることを理解しています。これを達成する方法はありますか?

答えて

1

私は、Jenkinsを実行しているホストまたはDockerがインストールされている別のホストにマップする別のJenkins slaveを作成します。次に、ジョブを実行してマスターではなくスレーブ上にDockerイメージを作成します。

official Jenkins Docker imageのドキュメントには、スレーブを接続する方法の詳細があります。

+0

ありがとうございましたthe answe r。 DockerでJenkinsを使いたいので、ホストにインストールする必要はありません。ホストにJenkinsのスレーブをインストールすることは目的を破るものです。 – Demetris

0

Jenkinsコンテナ内のホストからDockerを使用することは可能です。コンテナにDockerをインストールし、ホストのドッカー・ソケット・ディスクリプタをマップする必要があります。これは可能性が実現されます

サンプルDockerfileは次のようになります。

docker run -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock my-image

FROM jenkins/jenkins:2.102 

USER root 

RUN apt-get update && \ 
    apt-get install -y \ 
    apt-transport-https \ 
    software-properties-common 

# Docker 
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \ 
    add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" && \ 
    apt-get update && apt-get install -y docker-ce && \ 
    usermod -aG docker,staff jenkins 

# Set SUID to run docker as root 
RUN chmod g+s /usr/bin/docker 

USER jenkins 

あなたはdocker.sockファイルディスクリプタをマップする必要が働いてドッカと、この画像に基づいて、コンテナを実行するには

新しい画像を書きたくない場合は、あらかじめ作成した画像を使用できます。https://hub.docker.com/r/mdobak/docker-jenkins/

関連する問題