Docker 容器无法写入 cifs 共享
Docker containers can't write inside cifs share
我有一个 docker compose 用于我正在使用多个容器构建的媒体服务器,我希望这些容器能够 R/W 在尝试多种方式后安装在主机上的 cifs 共享我似乎不能让他们写。
这是安装的共享:/etc/fstab
//192.168.X.X/Media /mnt/Media cifs cache=loose,credentials=/root/.smbcrd,vers=3.0 0 0
这里是多个容器之一 docker compose :
emby:
image: linuxserver/emby
container_name: emby
environment:
- PUID=998
- PGID=100
- TZ=Europe/Paris
- UMASK_SET=022 #optional
volumes:
- /mnt/Media/Configs/Emby:/config
- /mnt/Media/Series:/data/series
- /mnt/Media/Films:/data/movies
ports:
- 8096:8096
- 8920:8920
restart: unless-stopped
我正在学习 docker,我不认为在每个容器中安装 cifs 共享是解决方案,我是否需要在我的 docker compose 的卷部分中安装共享? ,共享是一个synology nas。
有人可以帮忙吗?
Docker
的 CIFS 可能性
让容器挂载(不好的做法)
services:
name:
cap_add:
- SYS_ADMIN
- DAC_READ_SEARCH
security_opt:
- "apparmor=unconfined"
Docker文件:
ENTRYPOINT ["/bin/bash", "mount.sh" ]
mount.sh:
#!/bin/bash
mkdir /mnt/whatever
mount -v -t cifs -o username=xx,password=xx,vers=SMB-Version-Number,dir_mode=0744,file_mode=0744 //IP/Path /mnt/whatever
<start your container logic>
由于安全性非常差而导致的错误方法,但在某些情况下 use-cases 可能会有所帮助。
让docker挂载
services:
name:
volumes:
- my_mount:/mnt/whatever
volumes:
my_mount:
driver_opts:
type: cifs
o: username=xx,password=xx,vers=SMB-Version-Number
device: //IP/Path
让主机挂载
mount -t cifs -o username=xx,password=xx, \
uid=dockeruid,forceuid, \
gid=dockergid,forcegid, \
file_mode=744,dir_mode=744 //IP/Path /mnt/whatever
运行 docker 个容器然后与此用户:
services:
name:
user: "dockeruid:dockergid"
volumes:
- /mnt/whatever:/mnt/whatever
我有一个 docker compose 用于我正在使用多个容器构建的媒体服务器,我希望这些容器能够 R/W 在尝试多种方式后安装在主机上的 cifs 共享我似乎不能让他们写。 这是安装的共享:/etc/fstab
//192.168.X.X/Media /mnt/Media cifs cache=loose,credentials=/root/.smbcrd,vers=3.0 0 0
这里是多个容器之一 docker compose :
emby:
image: linuxserver/emby
container_name: emby
environment:
- PUID=998
- PGID=100
- TZ=Europe/Paris
- UMASK_SET=022 #optional
volumes:
- /mnt/Media/Configs/Emby:/config
- /mnt/Media/Series:/data/series
- /mnt/Media/Films:/data/movies
ports:
- 8096:8096
- 8920:8920
restart: unless-stopped
我正在学习 docker,我不认为在每个容器中安装 cifs 共享是解决方案,我是否需要在我的 docker compose 的卷部分中安装共享? ,共享是一个synology nas。 有人可以帮忙吗?
Docker
的 CIFS 可能性让容器挂载(不好的做法)
services:
name:
cap_add:
- SYS_ADMIN
- DAC_READ_SEARCH
security_opt:
- "apparmor=unconfined"
Docker文件:
ENTRYPOINT ["/bin/bash", "mount.sh" ]
mount.sh:
#!/bin/bash
mkdir /mnt/whatever
mount -v -t cifs -o username=xx,password=xx,vers=SMB-Version-Number,dir_mode=0744,file_mode=0744 //IP/Path /mnt/whatever
<start your container logic>
由于安全性非常差而导致的错误方法,但在某些情况下 use-cases 可能会有所帮助。
让docker挂载
services:
name:
volumes:
- my_mount:/mnt/whatever
volumes:
my_mount:
driver_opts:
type: cifs
o: username=xx,password=xx,vers=SMB-Version-Number
device: //IP/Path
让主机挂载
mount -t cifs -o username=xx,password=xx, \
uid=dockeruid,forceuid, \
gid=dockergid,forcegid, \
file_mode=744,dir_mode=744 //IP/Path /mnt/whatever
运行 docker 个容器然后与此用户:
services:
name:
user: "dockeruid:dockergid"
volumes:
- /mnt/whatever:/mnt/whatever