2016-05-17 68 views
2

我在一個Docker容器中運行一個Jenkins實例,它連接到一個BitBucket存儲庫。當在線資源庫發生變化時,Jenkins會下載新的源代碼。基於新來源,我想創建一個新的Docker鏡像,但是這需要在主機上進行,因爲它是我安裝Docker的地方。如何在Docker容器中運行Jenkins時在主機上構建?

我還沒弄清楚如何在主機上運行某些東西,但同時我明白Docker用於隔離進程,所以這是設計。有沒有辦法做到這一點?

回答

1

我將創建一個單獨的Jenkins slave,映射到運行Jenkins的主機或安裝了Docker的單獨主機。然後運行你的工作,在從服務器而不是主服務器上創建Docker鏡像。

official Jenkins Docker image的文檔有關於如何連接從站的詳細信息。

+0

謝謝你的答覆河我想在Docker中使用Jenkins,這樣我就不需要將它安裝在主機上。在主機上安裝一個Jenkins slave會失敗目的。 – Demetris

0

可以使用Jenkins容器內的主機使用Docker。您需要在容器上安裝Docker,然後映射主機的docker套接字描述符。

樣品Dockerfile將實現這一點看起來是這樣的:

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文件描述符:

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

如果你不想建立新的圖像,你可以使用我的預建圖像:https://hub.docker.com/r/mdobak/docker-jenkins/

相關問題