繁体   English   中英

Docker组成容器之间的共享卷,但在主机中具有路径

[英]Docker-compose shared volume between containers but that has a path in host

我发现可以使用命名卷,以便两个容器可以在它们之间交换数据。 但是,我需要将此名称卷存储在我的主机计算机(运行docker映像的计算机)中。

那么,如何创建存储在/ media / my_volume中并在容器之间共享的voluma? 我试图简单地将/ media / my_volume绑定到两个容器,但是当我再次开始撰写时,它最终导致擦除了所有内容

更新:

version: '3'

services:
  transmission:
    build: ./rpi-transmission
    image: rpi-transmission
    ports:
     - "9091:9091"
     - "51413:51413"
     - "51413:51413/udp"
    volumes:
     - "/home/pi/transmission:/etc/transmission"
     - "/media/external:/home/downloads"
     - "/home/transmission-watch:/home/transmission-watch"
  samba:
    build: ./rpi-samba
    image: rpi-samba
    stdin_open: true
    volumes:
     - "/media/external:/data/share:ro"
  kodi:
    build: ./kodi-rpi
    image: kodi-rpi
    ports:
     - "127.0.0.1:8080:8080"
     - "127.0.0.1:9777:9777/udp"
    devices:
     - "/dev/tty0:/dev/tty0"
     - "/dev/tty2:/dev/tty2"
     - "/dev/fb0:/dev/fb0"
     - "/dev/input:/dev/input"
     - "/dev/snd:/dev/snd"
     - "/dev/vchiq:/dev/vchiq"
    volumes:
     - "/var/run/dbus:/var/run/dbus"
     - "/etc/localtime:/etc/localtime:ro"
     - "/etc/timezone:/etc/timezone:ro"
     - "/home/pi/kodi-rpi/config:/config/kodi"
     - "/home/pi/kodi-rpi/data:/data"

我需要在两个容器上都使用/ media / external。 如果给它起一个名字,则无法将其挂载到/ media / external。 如果我现在简单地做的话,我认为samba会删除传输的内容

但是,不会从容器中删除内容,而是将其“屏蔽”,因为已安装的目录已安装在现有文件的顶部。 文件仍在容器中,仅无法访问。

但是,卸载该卷将显示仍在容器中的内容(仅不可访问,因为该卷已安装在其上)

它在/ var / lib / docker内部的主机上已经有一个路径(或您配置为图形路径的任何目录)。

$ docker volume create test
test
$ docker volume inspect -f '{{.Mountpoint}}' test
/var/lib/docker/volumes/test/_data

如果希望它出现在/ media / my_volume中,则可以执行绑定安装:

mount --bind /var/lib/docker/volumes/test/_data /media/my_volume

暂无
暂无

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

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