我想请教您以下问题的帮助/建议。我们使用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
模式。
如果您需要其他信息,我会尽力提供。
谢谢。
答案 0 :(得分:0)
您可以做的一件事是在Docker上运行kubernetes时在rkt上运行构建?