簡體   English   中英

在 jenkins 管道中,在 azure kubernetes 服務的 Kubernetes pod 中執行 docker build 時,unix 上出現問題 Docker 守護進程套接字

[英]In jenkins pipeline getting issue Docker daemon socket at unix when doing docker build in Kubernetes pod of azure kubernetes services

m 遇到 docker daemon 問題,撥打 unix /var/run/docker.sock: connect: permission denied Update docker file

FROM jenkins/jenkins:lts-jdk11
LABEL maintainer ashish<ashish@gmail.com>

USER root
RUN apt-get update && \
    apt-get install sudo && \
    yes |apt-get install vim
# system preparation    
RUN sudo apt-get -y install apt-transport-https ca-certificates software-properties-common curl
RUN sudo apt-get update && apt-get install -y apt-transport-https

 # Install Docker client
ENV DOCKER_BUCKET download.docker.com
ENV DOCKER_VERSION 19.03.8
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

RUN apt-get update
RUN apt-get -y install docker-ce
RUN docker -v

RUN sudo /etc/init.d/docker start
# RUN sudo systemctl enable docker
#  kubectl
COPY kubectl ./kubectl
RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
RUN chmod +x kubectl \
 && mv ./kubectl /usr/local/bin/kubectl

ENV PATH="${PATH}:/usr/local/bin/docker"
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
 
 #Switch user to jenkins
# USER jenkins

在容器內我看不到 docker -v 但 docker ps 不工作。 是否還有我需要下載的 docker 客戶端,它將運行我的 docker-daemon

我建議您在部署中使用自定義 docker 映像,該映像將同時包含 Jenkins 和 Docker,因此應該可以解決您的問題。 您首先需要在 Mac 中安裝 docker。

  1. 使用名稱Dockerfile編寫 Docker 文件
FROM  jenkins/jenkins:lts

RUN yum install docker -y

EXPOSE 8080
  1. 構建鏡像
docker build -t <name of your image> .

這將在您的機器上構建您的圖像,其中包含 Jenkins 和 Docker。 您可以使用以下命令驗證圖像:

docker images
  1. 在您的部署中使用以下圖像

用您的自定義圖像替換Deployment中的圖像。

要更多地了解此用例,請查看此鏈接

我認為問題來自這樣一個事實,即當它在您的本地開發機器上運行時,您使用了--priviledged

在您的部署清單中,您將 hostPath 設置為工作節點 docker 套接字,這是正確的,但 pod securityContext 不會授予對 mountPath 的任何提升訪問權限,容器 securityContext 也不允許權限提升。

除非您在 pod 級別或容器級別的安全上下文中允許更高的特權,否則這是不可能的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM