Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VirtualBox中的Docker无法访问共享文件夹_Docker_Docker Compose_Virtualbox - Fatal编程技术网

VirtualBox中的Docker无法访问共享文件夹

VirtualBox中的Docker无法访问共享文件夹,docker,docker-compose,virtualbox,Docker,Docker Compose,Virtualbox,主机操作系统:macOS Catalina 来宾操作系统:Ubuntu服务器20.04 嗨, 我真是抓狂。我正在文件服务器上设置Docker VM。我的主Docker服务器本机运行Ubuntu服务器。不幸的是,我需要使用一些Docker容器,它们需要文件服务器上的存储。这是2008年的Mac Pro,所以Mac版的Docker是不可能的。Docker工具箱也不起作用。因此,我只是去掉了中间人,只是手动创建了一个LinuxVM,并在其中运行Docker。现在,Docker运行良好,但容器无法写入我

主机操作系统:macOS Catalina 来宾操作系统:Ubuntu服务器20.04

嗨, 我真是抓狂。我正在文件服务器上设置Docker VM。我的主Docker服务器本机运行Ubuntu服务器。不幸的是,我需要使用一些Docker容器,它们需要文件服务器上的存储。这是2008年的Mac Pro,所以Mac版的Docker是不可能的。Docker工具箱也不起作用。因此,我只是去掉了中间人,只是手动创建了一个LinuxVM,并在其中运行Docker。现在,Docker运行良好,但容器无法写入我在VirtualBox中设置的共享文件夹

我已经安装了来宾添加。我已经让我的用户成为vboxsf组(以及docker组)的成员,因此我不必对与docker相关的所有内容都使用sudo。我可以使用nano或任何我需要的工具从虚拟机读取和写入共享文件夹,Docker本身可以在运行Docker compose up-d时创建它需要的任何目录。。。只是Docker容器无法写入。无论我是否使用sudo运行docker compose,都没有区别

现在,我正在运行Portainer、Bazarr、Radarr、Sonar、Syslog ng,当我让其他人能够写入共享文件夹时,我将运行BackupPC或UrBackup。我的大多数容器都在我的专用Docker机器上运行,但是那些需要访问大量存储的容器将在这台机器上运行

VirtualBox正在我的用户帐户下运行。文件夹的权限为755。我不明白他们为什么不能写字。有什么想法吗

谢谢

编辑8/11/20: 我改变了一些事情,在打了几个嗝后,Portainer开始工作了。然后我发现可以将docker的API设置为从远程Portainer监视,所以我删除了那个。看来Docker自己也能很好地使用它们。。。问题出在容器上。绑定映射已正确完成。但是容器无法看到这些文件夹中的内容,也无法写入这些文件夹

在这一点上,我只使用Bazarr、Radarr和Sonar,因为它们非常相似,否则我只会使用一个容器。现在它们正在运行,因为我已经将它们的/config文件夹映射到VM中的一个文件夹。但要让他们访问存储阵列,我仍然必须使用共享文件夹,而且它们似乎无法跨越两个虚拟化级别。Docker>Ubuntu服务器来宾操作系统>macOS Catalina主机操作系统

按要求编辑2: 这是我的docker-compose.yml文件。注释掉的容器是这样的,因为我试图一次处理一件事情。没有被注释掉的三个是如此相似,以至于它们可能是一个,所以我认为如果一个突然开始工作,而其他人没有,这可能会帮助我弄清楚一些事情

version: "3.7"

networks:
  docker:
    name: DockerBridge
    driver: bridge

services:
############################# NetData
  # netdata:
  #   image: netdata/netdata
  #   container_name: NetData
  #   hostname: azeroth.local
  #   ports:
  #     - 19999:19999
  #   environment:
  #     PUID: ${PUID}
  #     PGID: ${PGID}
  #     TZ: ${TZ}
  #     DOCKER_HOST: proxy:2375
  #   restart: unless-stopped
  #   cap_add:
  #     - SYS_PTRACE
  #   security_opt:
  #     - apparmor:unconfined
  #   volumes:
  #     - /etc/passwd:/host/etc/passwd:ro
  #     - /etc/group:/host/etc/group:ro
  #     - /proc:/host/proc:ro
  #     - /sys:/host/sys:ro
  #     - /etc/os-release:/host/etc/os-release:ro
  #     - ${USERDIR}/netdata/lib:/var/lib/netdata
  #     - ${USERDIR}/netdata/cache:/var/cache/netdata
  #     - ${USERDIR}/netdata/config:/etc/netdata
  #     - ${USERDIR}/nginx/letsencrypt/live:/ssl:ro
  #   network_mode: bridge
  #   depends_on:
  #     - proxy
  # proxy:
  #   image: tecnativa/docker-socket-proxy
  #   container_name: DockerProxy
  #   environment:
  #     PUID: ${PUID}
  #     PGID: ${PGID}
  #     TZ: ${TZ}
  #     CONTAINERS: 1
  #   volumes:
  #     - /var/run/docker.sock:/var/run/docker.sock:ro
  #   network_mode: bridge

############################# Bazarr
  bazarr:
    image: linuxserver/bazarr
    container_name: Bazarr
    environment:
      PUID: ${PUID}
      PGID: ${PGID}
      TZ: ${TZ}
      UMASK_SET: 022 #optional
    volumes:
      - ${USERDIR}/Docker/Bazarr:/config
      - ${MEDIADIR}/Movies:/movies
      - ${MEDIADIR}/TV\ Shows:/tv
    ports:
      - 6767:6767
    restart: unless-stopped
    networks:
      - docker

############################# Radarr
  radarr:
    image: linuxserver/radarr
    container_name: Radarr
    environment:
      PUID: ${PUID}
      PGID: ${PGID}
      TZ: ${TZ}
      UMASK_SET: 022 #optional
    volumes:
      - ${USERDIR}/Docker/Radarr:/config
      - ${MEDIADIR}/Movies:/movies
      - ${MEDIADIR}/Downloads:/downloads
    ports:
      - 7878:7878
    restart: unless-stopped
    networks:
      - docker

############################# Sonarr
  sonarr:
    image: linuxserver/sonarr
    container_name: Sonarr
    environment:
      PUID: ${PUID}
      PGID: ${PGID}
      TZ: ${TZ}
      UMASK_SET: 022 #optional
    volumes:
      - ${USERDIR}/Docker/Sonarr:/config
      - ${MEDIADIR}/TV\ Shows:/tv
      - ${MEDIADIR}/Downloads:/downloads
    ports:
      - 8989:8989
    restart: unless-stopped
    networks:
      - docker

############################# syslog-ng
  # syslog-ng:
  #   image: balabit/syslog-ng:latest
  #   container_name: Syslog-ng
  #   ports:
  #       - 514:514/udp
  #       - 601:601/tcp
  #       - 6514:6514/tcp
  #   environment:
  #       PUID: ${PUID}
  #       PGID: ${PGID}
  #       TZ: ${TZ}
  #   volumes:
  #       - ${HOSTDIR}/Docker/Syslog-ng/syslog-ng.conf:/etc/syslog-ng/syslog-ng.conf
  #       - ${HOSTDIR}/Docker/Syslog-ng/logs:/var/log
  #   restart: always
  #   networks:
  #     - docker
以下是.env文件,其中部分已编辑:

PUID=1000
PGID=1000
TZ=America/New_York
USERDIR=/home/scott/Docker
BACKUPDIR=/media/sf_Backup
HOSTDIR=/media/sf_Host
MEDIADIR=/media/sf_Media
DOMAIN=xxxxxxxx.us
EMAIL=xxxxxxxx@xxxxx.com
VirtualBox有3个共享文件夹

  • 备份映射到/Volumes/Backup
  • 主机映射到/Users/scott
  • 介质已映射到/卷/介质
#1将是为集装箱BackupPC一旦我得到这些工作的其余部分,将是我的所有计算机的备份。因此,它还没有被使用

#2来自早期的设置,其中/config目录也映射到共享文件夹。我意识到我不需要它,但还没有删除VirtualBox中的共享文件夹

#1是一个外部eSata ZFS池。目前有一个6TB的驱动器,设置了池,可以根据需要轻松添加更多驱动器

#2映射到主SSD上的my macOS主文件夹


#3是一个5个4TB硬盘驱动器ZFS阵列,具有一个奇偶校验驱动器,容量为16TB。此阵列与备份池之间存在差异的原因是此阵列大部分仍然为空。

我已测试了您的设置,但未发现任何问题。我的设置:

安装程序 第一:在运行时使用
sudo
启动容器与否没有区别。默认情况下,Unix套接字归用户
root
所有,其他用户只能使用
sudo
访问它。Docker守护进程始终作为
root
用户运行。资料来源:

  • 主机:
    • 微软视窗10企业版
  • 虚拟机(使用Virtual Box 6.1.2)
    • Ubuntu 20.04.1 LTS
  • Docker安装
    • Docker版本19.03.8,构建afacb8b7f0
    • docker compose版本1.26.0,内部版本d4451659
Docker文件 我在一个包含以下内容的文件夹中调用

developer@appdev:~/tmp$ ls -l
total 16
drwxrwxr-x  2 developer developer 4096 Aug 14 08:59 .
drwxrwx--- 11 developer developer 4096 Jul 29 09:50 ..
-rw-rw-r--  1 developer developer  261 Aug 14 08:23 docker-compose.yaml
-rw-rw-r--  1 developer developer  111 Aug 14 08:17 .env
docker compose.yaml文件
声纳:
图片:linuxserver/sonarr
货柜名称:声纳
环境:
PUID:${PUID}
PGID:${PGID}
UMASK#U套件:022#可选
卷数:
-${HOSTDIR}/testdir:/Documents
端口:
- 8989:8989
重新启动:除非停止
.env
文件 虚拟盒的共享文件夹 我的共享文件夹映射到/media/sf_文档

developer@appdev:~$ls-l/媒体/
总数8
drwxrwx---1根vboxsf 4096 Aug 12 09:01 sf_文档
文件夹sf_Dockument包含一个由主机(Windows)创建的文件夹
testdir

测试 为了进行测试,我使用

docker编写
让它跑吧。要使用bash以交互方式输入容器,请执行以下操作:

docker exec -it Sonarr bash
尝试使用
cd Documents/
touch test
mkdir mytestdir
添加文件。一个
ls-l
输出如下

total 4
drwxrwx--- 1 root  998    0 Aug 14 07:08 .
drwxr-xr-x 1 root root 4096 Aug 14 06:23 ..
drwxrwx--- 1 root  998    0 Aug 14 07:08 mytestdir
-rwxrwx--- 1 root  998    0 Aug 14 06:24 test
powershell
dir
invoke按预期输出文件

PS D:\UserData\***\Documents\testdir>dir
Verzeichnis:D:\UserData\***\Documents\testdir
模式LastWriteTime长度名称
----                -------------         ------ ----
d---14.08
total 4
drwxrwx--- 1 root  998    0 Aug 14 07:08 .
drwxr-xr-x 1 root root 4096 Aug 14 06:23 ..
drwxrwx--- 1 root  998    0 Aug 14 07:08 mytestdir
-rwxrwx--- 1 root  998    0 Aug 14 06:24 test