尝试启动Docker容器时卷权限被拒绝

6uxekuva  于 2023-05-22  发布在  Docker
关注(0)|答案(1)|浏览(207)

我开始使用Rancher Desktop而不是Docker Desktop,并面临权限问题。我有一个docker-compose文件,其中包含以下内容:

version: "3.2"
services:
  rabbitmq:
    image: rabbitmq:3.8-management-alpine
    container_name: 'rabbitmq'
    ports:
      - 5672:5672
      - 15672:15672
    environment:
      RABBITMQ_DEFAULT_USER: guest
      RABBITMQ_DEFAULT_PASS: guest
    volumes:
      - ~/.docker-conf/rabbitmq/data/:/var/lib/rabbitmq/
      - ~/.docker-conf/rabbitmq/log/:/var/log/rabbitmq

但是当我尝试通过执行docker-compose up rabbitmq来运行rabbitmq容器时,会抛出以下错误:

% docker-compose up rabbitmq
[+] Running 1/0
 ✔ Container rabbitmq  Created                                                                 0.0s 
Attaching to rabbitmq
rabbitmq  | chown: /var/lib/rabbitmq: Permission denied
rabbitmq exited with code 1
%

我的电脑是Mac OS Monterey(M1)。
当我使用Docker Desktop时,它工作正常。你知道为什么牧场主桌面有权限问题以及如何修复它吗?任何帮助将不胜感激!
我试着删除卷部分并设置user: 'root',这解决了这个问题,但它对我来说不是一个好的解决方案。

version: "3.2"
services:
  rabbitmq:
    image: rabbitmq:3.8-management-alpine
    container_name: 'rabbitmq'
    user: "root"
    ports:
      - 5672:5672
      - 15672:15672
    environment:
      RABBITMQ_DEFAULT_USER: guest
      RABBITMQ_DEFAULT_PASS: guest

我希望我的rabbitmq容器可以正常启动,没有权限错误。

btxsgosb

btxsgosb1#

如果你使用Docker卷,而不是尝试绑定挂载现有的文件系统目录,这一切都很好:

services:
  rabbitmq:
    image: rabbitmq:3.8-management-alpine
    container_name: 'rabbitmq'
    ports:
      - 5672:5672
      - 15672:15672
    environment:
      RABBITMQ_DEFAULT_USER: guest
      RABBITMQ_DEFAULT_PASS: guest
    volumes:
      - rabbitmq-data:/var/lib/rabbitmq/
      - rabbitmq-log:/var/log/rabbitmq

volumes:
  rabbitmq-data:
  rabbitmq-log:

这是因为在挂载卷时,它会获得挂载点的所有权和权限。
使用卷通常是管理容器存储更有效的方法(除非您明确需要访问底层文件)。

相关问题