DevOps課程-Jenkins 2

進階應用,重建Jenkins Container,使其可以執行docker指令(為了docker build)

ZONGRU Li
Jan 9, 2022

首先為了理解清楚目前mount的實體機台目錄

我們將嘗試移除目前的Jenkins Container,但是沿用之前mount的實體目錄

記得最初的Jenkins Container建立是以下指令:

docker run --name jenkins_container -p 8080:8080 -p 50000:50000 -d \
-v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

所以連帶建立出了被mountvolume,可由以下指令確認:

docker volume ls

然後很突然地移除當前既有的Jenkins Container:

docker stop {jenkins container id}

接著重新建立新的Jenkins Container

但是要讓這個環境可以使用到實體機台上的docker工具,所以執行:

docker run -p 8080:8080 -p 50000:50000 -d \
-v jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):/usr/bin/docker \
jenkins/jenkins:lts

其中docker.sock是docker daemon使用的預設Unix socket

第三行which docker那行就只是把docker套件綁進容器內也可以用

所以執行建立容器:

此時依樣進去到該Jenkins Web網站(http://{Deoplet的機台IP}:8080):

可以進到頁面登入!!

Job也還在:

但是接著嘗試進到容器內執行簡單的docker pull指令:

但是接著嘗試簡單的docker pull指令(比如拉個簡單的redis)

docker.sock的權限不夠

所以要先改用root進到容器內修改權限:

容器內修改其權限,執行:

chmod 666 /var/run/docker.sock

離開在用一般帳號進入容器內,重新執行docker pull指令嘗試:

容器內可以docker pull了!

這也就代表著,Jenkins內的流程Job也可以跑docker了!!

2023/02/25另外補充時區對應台北的方式

使用--tz的flag

其他參考:

LINK
LINK

參考課程reference

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet