簡體   English   中英

bitnami consul 無法使用 docker 桌面卷掛載訪問文件或目錄

[英]bitnami consul cannot access file or directory using docker desktop volume mount

使用 Windows 容器和實驗模式在 docker 桌面上運行 Consul 效果很好。 但是,如果我嘗試將 bitnami consul 的數據文件掛載到本地卷掛載,則會出現以下錯誤:

chown: cannot access '/bitnami/consul'

powershell chown 錯誤

我的撰寫文件如下所示:

version: "3.7"
services:
  consul:
    image: bitnami/consul:latest
    volumes:
      - ${USERPROFILE}\DockerVolumes\consul:/bitnami
    ports:
      - '8300:8300'
      - '8301:8301'
      - '8301:8301/udp'
      - '8500:8500'
      - '8600:8600'
      - '8600:8600/udp'
    networks: 
      nat:        
        aliases:
          - consul

如果我刪除卷部分,一切正常,但我無法保留我的數據。 如果遵循自述文件中的說明 談到擁有適當的權限,但我不知道如何使用 docker desktop 讓它工作。

旁注如果我不掛載/bitnami而是/bitnami/consul ,我會收到以下錯誤: 2020-03-30T14:59:00.327Z [ERROR] agent: Error starting agent: error="Failed to start Consul server: Failed to start Raft: invalid argument" powershell 無法啟動 Raft

另一種選擇是編輯 docker-compose.yaml 以通過添加user: root指令以 root 身份部署 consul 容器:

version: "3.7"
services:
  consul:
    image: bitnami/consul:latest
    user: root
    volumes:
      - ${USERPROFILE}\DockerVolumes\consul:/bitnami
    ports:
      - '8300:8300'
      - '8301:8301'
      - '8301:8301/udp'
      - '8500:8500'
      - '8600:8600'
      - '8600:8600/udp'
    networks: 
      nat:        
        aliases:
          - consul

沒有user: root容器以非 root 用戶身份執行(用戶 1001):

▶ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                                                                              NAMES
0c590d7df611        bitnami/consul:1    "/opt/bitnami/script…"   4 seconds ago       Up 3 seconds        0.0.0.0:8300-8301->8300-8301/tcp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8301->8301/udp, 0.0.0.0:8600->8600/tcp, 0.0.0.0:8600->8600/udp   bitnami-docker-consul_consul_1

▶ dcexec 0c590d7df611
I have no name!@0c590d7df611:/$ whoami
whoami: cannot find name for user ID 1001

但是添加這一行,容器以root身份執行:

▶ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                                                                              NAMES
ac206b56f57b        bitnami/consul:1    "/opt/bitnami/script…"   5 seconds ago       Up 4 seconds        0.0.0.0:8300-8301->8300-8301/tcp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8301->8301/udp, 0.0.0.0:8600->8600/tcp, 0.0.0.0:8600->8600/udp   bitnami-docker-consul_consul_1

▶ dcexec ac206b56f57b
root@ac206b56f57b:/# whoami
root

如果容器以root身份執行,則主機卷中的權限應該沒有任何問題。

Consul 容器是一個非 root 容器,在這種情況下,非 root 用戶應該能夠在卷中寫入。

使用主機目錄作為卷,您需要確保安裝到容器中的目錄具有適當的權限,在這種情況下, others可寫權限。 您可以通過運行sudo chmod o+x ${USERPROFILE}\\DockerVolumes\\consul (或主機目錄的正確路徑)來修改權限。

這個本地文件夾是在您第一次運行docker-compose up時創建的,或者您可以使用mkdir自己創建它。 創建(手動或自動)后,您應該使用chmod授予適當的權限。

我不熟悉 Docker 桌面或 Windows 環境,但您應該能夠使用 CLI 執行等效操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM