我正在使用一个第三方库,该库通过以下方法创建同级码头容器:
docker run -d /var/run/docker.sock:/var/run/docker.sock ...
我正在尝试从上面的容器中创建一个Kubernetes部署,但目前正在获得:
无法连接到unix://var/run/docker.sock上的Docker守护进程。码头守护进程正在运行吗?
这是预期的,因为我没有将/var/run/docker.sock
声明为部署yaml中的卷。
问题是我不知道该怎么做。可以在部署yaml中将/var/run/docker.sock
作为卷挂载吗?
如果不是,在Kubernetes部署/吊舱中运行码头同胞容器的最佳方法是什么?
发布于 2017-11-07 16:06:31
虽然在k8s监管之外启动容器听起来很脆弱,但您应该能够使用主机路径体积安装/var/run/docker.sock
。
与文档不同的示例:
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: gcr.io/google_containers/test-webserver
name: test-container
volumeMounts:
- mountPath: /var/run/docker.sock
name: docker-sock-volume
volumes:
- name: docker-sock-volume
hostPath:
# location on host
path: /var/run/docker.sock
# this field is optional
type: File
我认为简单的挂载应该足以让容器内的docker客户端与主机上的docker守护进程进行通信,但如果您收到写权限错误,则意味着您需要使用类似的securityContext对象作为特权容器运行容器(仅从上面提取的一个摘录来显示从文献资料获取的值):
spec:
containers:
- image: gcr.io/google_containers/test-webserver
securityContext:
privileged: true
name: test-container
https://devops.stackexchange.com/questions/2506
复制相似问题