2016-11-10 34 views
1

我在碼頭上運行官方詹金斯容器。我需要將Docker鏡像構建爲成功構建的後續操作,但Jenkins容器沒有Docker二進制文件。碼頭建設裏面官方jenkins容器

我看到了幾個選項,首先從官方圖像派生我自己的詹金斯容器與碼頭二進制可用。第二種選擇是使用專門的Jenkins從站和docker以及其他必要的運行時間。第三種選擇是以合理的方式提供Jenkins服務器。我想在容器上運行所有東西,因爲它乾淨,簡單,易於重複。

你是怎麼解決這個問題的?從長遠來看哪個更好的解決方案,爲什麼?我的最高優先級是能夠通過單一的有力命令來配置和引導整個CI基礎架構。另外,構建的碼頭容器將被推送到註冊表等,所以組件之間的連接應該是最佳的,而且複雜度最低或手動配置。

回答

3

在容器中安裝docker不是一個好主意。

related article

但是你可以達到通過安裝搬運工插座您的主機上運行的泊塢窗守護進程。 它應該對測試有用,但不要在生產模式下運行,因爲它會產生安全問題。

related article

你肯定能找到一個清潔的解決方案管理您的部署/直接從您的主機看你詹金斯容器的退出狀態生成過程。

+0

https://hub.docker.com/r/axltxl/jenkins-dood/ – user2363318

0

我們現在有一個與GoCD類似的設置,其中GoCD代理在Docker容器中運行,並且必須在成功的管道上構建圖像。

TL;博士仍然是一個哈克的方式,但是這是最好的選擇運行得:從容器使用TCP連接到主機泊塢窗其中運行詹金斯。 @Raphayol提到,請注意安全含義。

下面是我們的嘗試:

1)內的碼頭工人

不是一個好主意潤泊塢窗。導致IO子系統吠叫並重新啓動的各種懸掛情況是必要的。

2)羣建設

羣簇或任何其他搬運工集羣是指運行容器不建立他們。舊的容器被推回最新版本,因爲構建和推送不能保證在同一個節點上執行。

3)專用構建主機

雖然這個作品拍工作節點和自動縮放的目的變得棘手。

4)安裝搬運工插座

排序的作品,但在重負載它會產生隨機IO鎖定並重新啓動碼頭工人守護進程是必要

5)連接回通過TCP

此選項幾個月現在,儘管如果你的詹金斯構建的服務器很好地隔離了,這不是一個明確的解決方案,但你可以忍受這一點。

[[email protected] ~]# docker ps 
CONTAINER ID  IMAGE        COMMAND    CREATED    STATUS    PORTS        NAMES 
e3630d84909e  registry.backbase.com/gocd-agent "/sbin/my_init"  2 minutes ago  Up 2 minutes  0.0.0.0:9040-9045->9040-9045/tcp docker_agent_1 
[[email protected] ~]# docker exec -it e3 env|grep DOCKER 
DOCKER_TLS_VERIFY=yes 
DOCKER_HOST=tcp://10.10.10.10:2376 
DOCKER_CERT_PATH=/var/go/docker-certs