使用Docker访问主机中存在的文件结构

时间:2018-02-15 05:37:55

标签: docker containers

如果我希望我的泊坞窗图像直接从我系统中存在的文件夹中获取数据,那是可能的。

如果是,那我该怎么做呢。

感谢。

2 个答案:

答案 0 :(得分:3)

通常的做法是在运行时使用 docker volume bind mount )。

volume

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"

答案 1 :(得分:1)

如果您使用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"