在k8s上同时访问docker.sock

时间:2017-05-29 09:30:38

标签: docker kubernetes bamboo

我想请教您以下问题的帮助/建议。我们使用Bamboo作为CI,我们在k8s上运行远程竹子代理。

在我们的构建中,我们有步骤在测试正确运行时创建Docker镜像。对于远程竹子代理,我们通过docker.socket公开Docker。当我们只有一个远程竹子代理(测试它是如何工作的)时,一切都正常工作但最近我们增加了远程代理的数量。现在,很多情况下,构建在Docker镜像构建步骤中陷入困境并且不会移动。我们必须停止构建并再次运行它。通常在日志中没有有用的信息,但一旦进入,这将出现。

  

2017年5月24日16:04:54任务执行失败':......'   2017年5月24日16:04:54> Docker执行失败
  2017年5月24日16:04:54命令行[docker build -t ...]返回:
  2017年5月24日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 in docker的文章,但我不喜欢--privileged模式。

如果您需要其他信息,我会尽力提供。

谢谢。

1 个答案:

答案 0 :(得分:0)

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