Jenkins容器中安裝Docker

背景:

Docker官方是不建議在容器內(nèi)運行Docker daemon的,但是呢,當我們用Jenkins時,卻又免不了要用到Docker。這個時候,如果我們的Jenkins是安裝在Docker容器中,就會導致無法調(diào)用Docker。

過程:

在安裝Jenkins容器時,把host的docker socket掛載到容器里,直接利用host的docker daemon在容器里跑。同時在容器里安裝docker client。

掛載命令(其他命令根據(jù)自己需要調(diào)整):

docker run -p 8080:8080 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --name jenkins \
  jenkins/jenkins

登錄Jenkins容器:

docker exec -it -u root jenkins bash

安裝docker client(docker是ubuntu內(nèi)核,可以直接用ubuntu上一些命令):

apt-get update && \
apt-get -y install apt-transport-https \
     ca-certificates \
     curl \
     gnupg2 \
     software-properties-common && \
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
   $(lsb_release -cs) \
   stable" && \
apt-get update && \
apt-get -y install docker-ce

注意事項:

特別需要強調(diào)的是,因為docker內(nèi)部有些功能需要用到root權限(namespace and cgroups),這樣掛載后,容器內(nèi)的命令將能夠影響到host,會導致安全風險。具體問題就需要具體分析了。

參考文檔:

The simple way to run Docker-in-Docker for CI
Docker not found when building docker image using Docker Jenkins container pipeline
Is it possible to install only the docker cli and not the daemon
Can anyone explain docker.sock

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 一、Docker 簡介 Docker 兩個主要部件:Docker: 開源的容器虛擬化平臺Docker Hub: 用...
    R_X閱讀 4,508評論 0 27
  • 說到CI(持續(xù)集成)也許你腦子里馬上會蹦出一個著名的CI工具,就是我們本篇實踐記錄中的jenkins。 沒錯,je...
    wendell_dev閱讀 7,813評論 0 31
  • 五、Docker 端口映射 無論如何,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機是訪問不到的。此外,除了...
    R_X閱讀 1,954評論 0 7
  • 摘要:繼續(xù)docker的學習之旅,今天練習一些常用的命令: 一、鏡像相關 1.1 列出本機所有鏡像 docker ...
    暖夏未眠丶閱讀 843評論 0 0
  • 一,說清楚一個重要概念 二,我說的是什么概念 三,這個概念為什么重要 四,這個概念普通被如何識解 五,這個概念實際...
    池恩琛閱讀 596評論 0 1

友情鏈接更多精彩內(nèi)容