Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Atlassian竹子服务器中Docker中Docker的权限被拒绝_Docker_Kubernetes_Bamboo_Docker In Docker_Dind - Fatal编程技术网

Atlassian竹子服务器中Docker中Docker的权限被拒绝

Atlassian竹子服务器中Docker中Docker的权限被拒绝,docker,kubernetes,bamboo,docker-in-docker,dind,Docker,Kubernetes,Bamboo,Docker In Docker,Dind,我想用DIND和Atlassian竹子打造一个码头工人的形象 我创建了部署/状态集,如下所示: --- apiVersion: apps/v1 kind: StatefulSet metadata: labels: app: bamboo name: bamboo namespace: csf spec: replicas: 1 serviceName: bamboo revisionHistoryLimit: 10 selector: matchLa

我想用DIND和Atlassian竹子打造一个码头工人的形象

我创建了部署/状态集,如下所示:

---
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
请注意,我在
securityContext
中设置了
privileged:true
以启用此功能

但是,在尝试运行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'

我是否遗漏了文档中提到的设置DIND的内容

如果要以非root用户身份运行docker,则需要将其添加到docker组。


如果docker组不存在,则创建该组

$ sudo groupadd docker
将您的用户添加到docker组

$ sudo usermod -aG docker $USER
注销并重新登录,以便重新评估您的组成员资格

$ newgrp docker
验证是否可以在不使用sudo的情况下运行docker命令

$ docker run hello-world

如果这没有帮助,您可以更改docker socket的权限,以便能够连接到docker守护程序/var/run/docker.sock

sudo chmod 666 /var/run

主机系统上的/var/run/docker.sock文件由运行bamboo server容器进程的用户以外的其他用户拥有

在不知道集群的任何细节的情况下,我假设docker以“root”(UID=0)身份运行。从its中可以看出,Bambol服务器以“Bambol”的形式运行,通常会映射到主机系统上1XXX范围内的UID。由于这些用户不同,并且容器进程没有收到(主机)套接字的任何特定权限,因此给出了错误

因此,我认为有两种可能的方法:

  • 或者容器进程继续以“bambol”用户的身份运行,但在主机系统上有足够的权限访问/var/run/docker.sock。这通常意味着将主机系统上用户映射到的UID添加到主机系统上的docker组。但是,根据集群的上下文,对主机系统进行更改可能是一个选项,也可能不是一个选项,而且在集群上下文中是很棘手的,因为pod可能会迁移到未应用更改和/或UID更改的其他节点

  • 或者将容器更改为作为根用户以足够特权的用户运行。有两种方法可以实现这一点:1。您可以扩展和自定义Atlassian提供的基本映像以更改用户或2。您可以通过指定的“runAsUser”和“runAsGroup”securityContext指令覆盖容器在运行时运行的用户。两者都应为“0”


    • 更好的处理方法是运行一个sidecar容器-docker:dind,并导出docker\u主机=tcp://dind:2375 在主竹容器中。通过这种方式,您将在dind容器中调用Docker,而不需要挂载/var/run/Docker.sock

      我有两个想法可能会有所帮助,第一个是将您的用户添加到Docker组,如前所述。第二种是使用sudo chmod 666/777/var/run/docker.sock。让我知道这是否对你有用,或者你仍然需要帮助。将用户添加到docker组是我所缺少的@jt97Happy。我添加此评论是为了更具可视性。