同时访问K8S上的Docker.sock



我想向您提供以下问题的帮助/建议。我们使用竹子作为CI,并且在K8上运行远程竹子。

在我们的构建中,我们有一个步骤,该步骤在正确运行时会创建Docker映像。对于远程竹子,我们正在通过docker.socket暴露Docker。当我们只有一个远程竹子(用于测试其工作原理(时,一切正常工作,但最近我们增加了远程代理的数量。现在发生的是,构建被困在Docker Image Build Step中,并且不会移动。我们必须停止构建并再次运行。通常,在日志中不是有用的信息,但是在出现时,一次。

2017年5月24日16:04:54执行任务失败':...'。
2017年5月24日16:04:54> Docker执行失败
2017年5月24日16:04:54命令行[docker build -t ...]返回:
24-May-2017 16:04:54 Time =" 2017-05-24T16:04:54 02:00" Level = Info MSG ="设备或资源忙"

这是我们的k8s deployment的样子:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: bamboo-agent
  namespace: backend-ci
spec:
  replicas: 5
  template:
    metadata:
      labels:
        app: bamboo-agent
    spec:
      containers:
      - name: bamboo-agent
        stdin: true
        resources:
          .
        env:
          .
          .
          .
        ports:
        - .
        volumeMounts:
          - name: dockersocket
            mountPath: /var/run/docker.sock
      volumes:
        - hostPath:
            path: /var/run/docker.sock
          name: dockersocket

这是远程竹子代理的Dockerfile

FROM java:8
ENV CI true
RUN apt-get update && apt-get install -yq curl && apt-get -yqq install docker.io && apt-get install tzdata -yq
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl && mv kubectl /usr/local/bin
RUN echo $TZ | tee /etc/timezone 
RUN dpkg-reconfigure --frontend noninteractive tzdata
RUN wget -O /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64
RUN chmod +x /usr/local/bin/dumb-init
ADD run.sh /root
ADD .dockercfg /root
ADD config /root/.kube/
ADD config.json /root/.docker/
ADD gradle.properties /root/.gradle/
ADD bamboo-capabilities.properties /root
ENTRYPOINT ["/usr/local/bin/dumb-init", "--"]
CMD /root/run.sh

有什么方法可以解决这个问题?并且是公开docker.socket一个好的解决方案还是有更好的方法?

我在Docker中阅读了有关Docker的几篇文章,但我不喜欢--privileged模式。

如果您需要其他一些信息,我将尝试提供它们。

谢谢。

您可以做的一件事是在docker上运行kubernetes时在rkt上运行构建?

相关内容