繁体   English   中英

将目录从 docker 容器挂载到 linux ubuntu 主机

[英]mount a directory from docker container to the linux ubuntu host machine

我想使用 docker-compose.yml 将目录从 docker 挂载到我的 linux docker-compose.yml主机。

docker容器里面的目录是/usr/local/XXX ,我想挂载到/home/Projects/XX

我怎样才能让它发生?

这是我的docker-compose.yml文件:

version: '3'

services:
  MyContainer:
    image: XX.XXX.XXX.XXX:XXXX/XXX/MyContainer:latest
    restart: always
    container_name: MyContainer
    hostname: MyContainer_docker
    privileged: true
    ports:
      - "XXXX:XX"
    volumes:
      - /home/Project/workspace/XXX/XXXX:/home/XX
    environment:
      - ...
    extra_hosts:
      - ...
    networks:
      net_plain3:
        ipv4_address: ...

networks:
  # ...etc...

使用正确的驱动程序选项是可能的。

从技术上讲,您仍然将主机目录挂载到容器中,但结果是主机目录中填充了容器目录中的数据。 通常情况恰恰相反。 这就是您需要这些驱动程序选项的原因。

services:
  somebox:
    volumes:
      - xx-vol:/usr/local/XXX

volumes:
  xx-vol:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /home/Projects/XX

创建容器时,空的命名卷会使用挂载位置的映像内容进行初始化。
- 婊子

所以这里的关键是创建一个命名卷,将其用作主机上所需位置的设备。


作为完整的工作演示。

我创建以下 Dockerfile 以在 /workspace 目录中添加文本文件:

FROM busybox
WORKDIR /workspace
RUN echo "Hello World" > hello.txt

然后一个 compose.yaml 来构建这个图像并使用这些驱动程序选项安装一个卷:

services:
  databox:
    build: ./
    volumes:
      - data:/workspace

volumes:
  data:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /home/blue/scrap/vol/data

现在我运行以下命令:

$ mkdir data

$ docker-compose up
[+] Running 1/0
 ⠿ Container vol-databox-1  Created                                                                                                                                                                                  0.0s
Attaching to vol-databox-1
vol-databox-1 exited with code 0

$ cat /home/blue/scrap/vol/data/hello.txt
Hello World

如您所见,hello.txt 文件最终位于主机上。 它不是在容器启动后创建的,而是在容器启动时已经在容器的文件系统中,因为它是在构建期间添加的。

这意味着,可以使用容器中的数据填充主机目录,这样数据就不必在挂载卷后生成,这通常是这种情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM