首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >亚特兰西安竹服务器中码头上的码头拒绝许可

亚特兰西安竹服务器中码头上的码头拒绝许可
EN

Stack Overflow用户
提问于 2020-05-17 22:00:48
回答 3查看 2.1K关注 0票数 0

我正试着用DIND和亚特兰竹子建立一个码头形象。

我创建了部署/ StatefulSet,如下所示:

代码语言:javascript
复制
---
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映像时,我会得到一个权限错误:

代码语言:javascript
复制
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'

我是不是漏掉了什么东西?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-20 06:19:36

如文档这里中所提到的

如果您想以非根用户的身份运行docker,那么需要将它添加到.组中。

如果停靠组不存在,则创建它

代码语言:javascript
复制
$ sudo groupadd docker

将用户添加到停靠组中。

代码语言:javascript
复制
$ sudo usermod -aG docker $USER

注销并重新登录,以便重新评估组成员资格。

代码语言:javascript
复制
$ newgrp docker

验证您可以运行没有sudo的docker命令。

代码语言:javascript
复制
$ docker run hello-world

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

代码语言:javascript
复制
sudo chmod 666 /var/run
票数 0
EN

Stack Overflow用户

发布于 2020-05-20 07:53:49

主机系统上的/var/run/docker.sock文件属于与运行竹服务器容器进程的用户不同的用户。

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

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

  • 或者容器进程继续以“竹”用户的身份运行,但在主机系统上获得了访问/var/ run /docker.sock的足够权限。这通常意味着将竹用户映射到主机系统上的UID到主机系统上的docker组。但是,对主机系统进行更改可能是一个选项,也可能不是一个选项,这取决于集群的上下文,而且在集群上下文中是很棘手的,因为pod可以迁移到没有应用更改和/或UID更改的不同节点。
  • 或者将容器更改为作为具有足够特权的用户开始运行,作为根用户。有两种方法可以实现这一点: 1.扩展和自定义Atlassian提供的基本映像以更改用户;2.通过“runAsUser”和“runAsGroup”securityContext指令作为指定的这里覆盖容器在运行时运行的用户。两者都应该是“0”。
票数 2
EN

Stack Overflow用户

发布于 2020-11-27 09:28:08

处理此问题的更好方法是在主竹容器中运行sidecar容器- docker:dind和=tcp://dind:2375。这样,您将在dind容器中调用Docker,并且不需要挂载/var/run/docker.sock

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61859386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档