首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使使用sudo,在运行docker-组合时也拒绝了权限。

即使使用sudo,在运行docker-组合时也拒绝了权限。
EN

Stack Overflow用户
提问于 2022-04-30 17:24:35
回答 1查看 1.5K关注 0票数 0

我已经运行了几个月的基于码头的环境,通过docker -组合进行了配置,并尝试将新的Radarr/Tdarr容器添加到配置中。当重新运行docker-复合命令时,它将返回一个拒绝权限的错误,如下所示:

代码语言:javascript
复制
dhevans@ubuntu:/htpc-svc$ sudo docker-compose pull && docker-compose up -d
Pulling plex-server   ... done
Pulling homeassistant ... done
Pulling node-red      ... done
Pulling watchtower    ... done
Pulling radarr        ... done
Pulling tdarr         ... done
Traceback (most recent call last):
  File "urllib3/connectionpool.py", line 677, in urlopen
  File "urllib3/connectionpool.py", line 392, in _make_request
  File "http/client.py", line 1277, in request
  File "http/client.py", line 1323, in _send_request
  File "http/client.py", line 1272, in endheaders
  File "http/client.py", line 1032, in _send_output
  File "http/client.py", line 972, in send
  File "docker/transport/unixconn.py", line 43, in connect
PermissionError: [Errno 13] Permission denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "requests/adapters.py", line 449, in send
  File "urllib3/connectionpool.py", line 727, in urlopen
  File "urllib3/util/retry.py", line 410, in increment
  File "urllib3/packages/six.py", line 734, in reraise
  File "urllib3/connectionpool.py", line 677, in urlopen
  File "urllib3/connectionpool.py", line 392, in _make_request
  File "http/client.py", line 1277, in request
  File "http/client.py", line 1323, in _send_request
  File "http/client.py", line 1272, in endheaders
  File "http/client.py", line 1032, in _send_output
  File "http/client.py", line 972, in send
  File "docker/transport/unixconn.py", line 43, in connect
urllib3.exceptions.ProtocolError: ('Connection aborted.', PermissionError(13, 'Permission denied'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "docker/api/client.py", line 214, in _retrieve_server_version
  File "docker/api/daemon.py", line 181, in version
  File "docker/utils/decorators.py", line 46, in inner
  File "docker/api/client.py", line 237, in _get
  File "requests/sessions.py", line 543, in get
  File "requests/sessions.py", line 530, in request
  File "requests/sessions.py", line 643, in send
  File "requests/adapters.py", line 498, in send
requests.exceptions.ConnectionError: ('Connection aborted.', PermissionError(13, 'Permission denied'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "docker-compose", line 3, in <module>
  File "compose/cli/main.py", line 81, in main
  File "compose/cli/main.py", line 200, in perform_command
  File "compose/cli/command.py", line 70, in project_from_options
  File "compose/cli/command.py", line 153, in get_project
  File "compose/cli/docker_client.py", line 43, in get_client
  File "compose/cli/docker_client.py", line 170, in docker_client
  File "docker/api/client.py", line 197, in __init__
  File "docker/api/client.py", line 222, in _retrieve_server_version
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
[2464] Failed to execute script docker-compose

在测试这些容器时,我从复合文件中删除了新的图像,但它仍然返回错误。这将向我表明,这与新容器无关,而是与不再起作用的Docker有关。

如果我运行sudo docker-compose upsudo docker-compose up radarr,容器就可以正常启动,并且能够远程访问web服务。在我杀了命令之前,他们能正常工作。这将向我表明,图像或配置没有真正的问题,但是有一些东西阻止我让我的停靠程序编写文件正确地启动整个配置。

代码语言:javascript
复制
version: "3.4"
services:

  plex-server:
    container_name: plex-server
    image: linuxserver/plex
    restart: unless-stopped
    environment:
      - PUID=${PUID} # default user id, defined in .env
      - PGID=${PGID} # default group id, defined in .env
      - TZ=${TZ} # timezone, defined in .env
      - VERSION=docker
    network_mode: host
    volumes:
      - ${ROOT}/config/plex/db:/config # plex database
      - ${ROOT}/data/config/plex/transcode:/transcode # temp transcoded files
      - /mnt/elements:/elements
      - /mnt/expansion:/expansion

  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    volumes:
      - ${ROOT}/config/homeassistant:/config
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped
    privileged: true
    network_mode: host

  node-red:
    image: nodered/node-red:latest
    restart: always
    depends_on:
      - "homeassistant"
    user: root
    environment:
      - TZ=Europe/Zurich
#    ports:
#      - "1880:1880"
    network_mode: host
    volumes:
      - ${ROOT}/config/nodered:/data
      - /etc/localtime:/etc/localtime:ro

  watchtower:
    container_name: watchtower
    image: v2tec/watchtower
    network_mode: host
    environment:
      - LOG_LEVEL=info
      - PUID=${PUID} # default user id, defined in .env
      - PGID=${PGID} # default group id, defined in .env
      - TZ=${TZ} # timezone, defined in .env
      - UMASK=022 #optional
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

  radarr:
    container_name: radarr
    image: cr.hotio.dev/hotio/radarr
    network_mode: bridge
    ports:
      - "7878:7878"
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - UMASK=002
      - TZ=${TZ}
    volumes:
      - ${ROOT}/config/radarr:/config # plex database
      - /mnt/elements:/elements
      - /mnt/expansion:/expansion

  tdarr:
    container_name: tdarr
    image: ghcr.io/haveagitgat/tdarr:latest
    restart: unless-stopped
    network_mode: bridge
    ports:
      - 8265:8265 # webUI port
      - 8266:8266 # server port
      # - 8267:8267 # Internal node port
      # - 8268:8268 # Example extra node port
    environment:
      - TZ=${TZ}
      - PUID=${PUID}
      - PGID=${PGID}
      - UMASK_SET=002
      - serverIP=0.0.0.0
      - serverPort=8266
      - webUIPort=8265
      - internalNode=true
      - nodeID=MyInternalNode
    volumes:
      - ${ROOT}/config/tdarr/server:/app/server
      - ${ROOT}/config/tdarr/config:/app/configs
      - ${ROOT}/config/tdarr/logs:/app/logs
      - ${ROOT}/data/tdarr/transcode_cache:/temp
      - /mnt/elements:/elements
      - /mnt/expansion:/expansion

试图添加新的容器到码头-合成。总是会犯错误。移除新容器,仍会收到错误。旧网站仍然有效,新网站只能通过docker-compose-up工作。一切都像苏多一样。请告诉我我做错了什么,或者看看我的头撞在砖墙上已经有几个小时了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-03 14:45:44

您首先得到的错误似乎不是海星虫,但是在没有sudo的情况下运行docker-compose时(因为Docker守护进程套接字属于root:docker),它应该是可重复的。

更准确地说,错误与执行命令有关:

代码语言:javascript
复制
sudo docker-compose pull && docker-compose up -d  #(1.)

它的语义与

代码语言:javascript
复制
sudo /bin/bash -c "docker-compose pull && docker-compose up -d"  #(2.)

因此,命令1.1.部分是在没有根权限的情况下运行的。

因此,如果您想在不运行额外bash进程的情况下将两者结合起来,则只需运行:

代码语言:javascript
复制
sudo docker-compose pull && sudo docker-compose up -d

另外,请注意,可以至少以两种方式从Docker命令中“删除”sudo前缀:加入docker组(在个人工作站上可能有风险),或者使用bash别名;参见docker.sock permission denied

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

https://stackoverflow.com/questions/72070643

复制
相关文章

相似问题

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