DevOps課程-Jenkins 2
首先為了理解清楚目前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
所以連帶建立出了被mount的volume,可由以下指令確認:
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)
所以要先改用root進到容器內修改權限:
容器內修改其權限,執行:
chmod 666 /var/run/docker.sock
離開在用一般帳號進入容器內,重新執行docker pull指令嘗試:
這也就代表著,Jenkins內的流程Job也可以跑docker了!!