我正试着用DIND和亚特兰竹子建立一个码头形象。
我创建了部署/ StatefulSet,如下所示:
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: bamboo
name: bamboo
namespace: csf
spec:
replicas: 1
serviceName: bamboo
revisionHistoryLimit: 10
selector:
matchLabels:
app: bamboo
template:
metadata:
creationTimestamp: null
labels:
app: bamboo
spec:
containers:
- image: atlassian/bamboo-server:latest
imagePullPolicy: IfNotPresent
name: bamboo-server
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
securityContext:
privileged: true
volumeMounts:
- name: bamboo-home
mountPath: /var/atlassian/application-data/bamboo
- mountPath: /opt/atlassian/bamboo/conf/server.xml
name: bamboo-server-xml
subPath: bamboo-server.xml
- mountPath: /var/run
name: docker-sock
volumes:
- name: bamboo-home
persistentVolumeClaim:
claimName: bamboo-home
- configMap:
defaultMode: 511
name: bamboo-server-xml
name: bamboo-server-xml
- name: docker-sock
hostPath:
path: /var/run
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30注意,我已经在privileged: true中设置了securityContext来启用它。
但是,当试图运行docker映像时,我会得到一个权限错误:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See '/var/atlassian/application-data/bamboo/appexecs/docker run --help'我是不是漏掉了什么东西?
发布于 2020-05-20 06:19:36
如文档这里中所提到的
如果您想以非根用户的身份运行docker,那么需要将它添加到.组中。
如果停靠组不存在,则创建它
$ sudo groupadd docker将用户添加到停靠组中。
$ sudo usermod -aG docker $USER注销并重新登录,以便重新评估组成员资格。
$ newgrp docker验证您可以运行没有sudo的docker命令。
$ docker run hello-world如果这没有帮助,您可以更改docker套接字的权限,以便能够连接到docker守护进程/var/run/docker.sock。
sudo chmod 666 /var/run发布于 2020-05-20 07:53:49
主机系统上的/var/run/docker.sock文件属于与运行竹服务器容器进程的用户不同的用户。
在不了解集群的任何细节的情况下,我会假设docker以'root‘(UID=0)的形式运行。从它的Dockerfile中可以看到,竹服务器以“竹”的形式运行,它通常会映射到主机系统上1XXX范围内的UID。由于这些用户不同,容器进程没有收到(主机)套接字上的任何特定权限,因此将给出错误。
因此,我认为有两种可能的方法:
发布于 2020-11-27 09:28:08
处理此问题的更好方法是在主竹容器中运行sidecar容器- docker:dind和=tcp://dind:2375。这样,您将在dind容器中调用Docker,并且不需要挂载/var/run/docker.sock
https://stackoverflow.com/questions/61859386
复制相似问题