簡體   English   中英

訪問Docker主機中存在的文件結構

[英]Access file structure present in host with Docker

如果我想讓我的Docker映像直接從系統中存在的文件夾中獲取數據,那是可能的。

如果是,那我該怎么辦。

謝謝。

通常的做法是在運行時使用docker volumebind mount )。

體積

docker run -d \
  -it \
  --name devtest \
  --mount type=bind,source="$(pwd)"/target,target=/app \
  nginx:latest

這樣,您的/app內的容器就可以訪問您的主機路徑(此處$pwd/target

docker -compose文件中,請參閱docker compose volume synta x:

此示例顯示:

  • Web服務正在使用的命名卷( mydata ),
  • 為單個服務( db服務卷下的第一個路徑)定義綁定安裝
version: "3.2"
services:
  web:
    image: nginx:alpine
    volumes:
      - type: volume
        source: mydata
        target: /data
        volume:
          nocopy: true
      - type: bind
        source: ./static
        target: /opt/app/static

  db:
    image: postgres:latest
    volumes:
      - "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock"
      - "dbdata:/var/lib/postgresql/data"

volumes:
  mydata:
  dbdata:

在您的情況下,請使用:

- "/path/to/local/folder/on/host:/path/within/your/container"

如果使用docker-compose,則可以定義volumes以共享系統中的文件夾。 在下面的示例中,mysql將使用./data/db/mysql文件夾來存儲/讀取數據(因為默認情況下,它在Linux中使用/var/lib/mysql )。

另外,您還必須確保所提供的卷具有正確的權限,並且Docker對其具有讀/寫訪問權限。

version: "3"

services:    
    nginx:
        ......

    php:
        ........

    mysql:
        .........
        volumes:
            - "./data/db/mysql:/var/lib/mysql"

暫無
暫無

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

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