Docker - 组合容器之间的共享卷,但在宿主

时间:2018-03-06 07:06:25

标签: docker mount

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

那么如何创建存储在/ media / my_volume中的容器,它也在容器之间共享?我试图简单地将/ 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会删除传输内容

2 个答案:

答案 0 :(得分:0)

虽然内容未从容器中删除,但它被“屏蔽”,因为安装的目录安装在现有文件的顶部。这些文件仍然在容器中,只是无法访问。

但是,卸载卷会显示仍在容器中的内容(只有无法访问,因为卷安装在容器上)

答案 1 :(得分:0)

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

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

如果您希望它出现在/ media / my_volume上,您可以执行bind mount:

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