【发布时间】:2020-03-21 13:15:53
【问题描述】:
我的用例是一个转码农场,它从 Samba 共享读取输入并将其写入另一个。
在 Docker 中使用 mount.cifs 需要 SYS_ADMIN 和 DAC_READ_SEARCH 两种能力。我可以使用两台主机并在一台主机上运行smbd,并将其共享安装在另一台主机上。 (smbd 和 mount 都在容器中运行,只是在不同的主机中。)
但是,我不能使用相同的 mount 命令将 Samba 共享挂载到运行 smbd 的容器的主机上。
编辑:它适用于 Docker 桌面,但在 Linux 主机中失败。 (与docker引擎服务器版本相同)
TL;DR 以下 Docker Compose 失败,除非我授予它特权访问权限。
环境:适用于 Mac 的 Docker,不适用于裸机 Linux(Ubuntu 18.04.4 4.15.0-91-generic Docker 19.03.8 containerd 1.2.13),不适用于 Hyper-V 虚拟化 Linux( Ubuntu 19.04 5.0.0-38-generic Docker 19.03.6 containerd 1.2.13)
version: '3.4'
services:
samba:
image: dperson/samba
environment:
TZ: 'EST5EDT'
networks:
- default
ports:
- "137/udp"
- "138/udp"
- "139/tcp"
- "445/tcp"
tmpfs:
- /tmp
restart: unless-stopped
stdin_open: true
tty: true
volumes:
- /samba-data
command: '/bin/bash -c "touch /samba-data/file.txt && samba.sh -s \"data;/samba-data\" -u \"bob;bob\" -p"'
mounter:
image: ubuntu
command: '/bin/bash -c "apt update && apt install -y cifs-utils && mkdir /samba-data && mount -v -o username=bob,password=bob,vers=3.0,ro,port=445 //samba/data /samba-data"'
tty: true
# privileged: true
cap_add:
- SYS_ADMIN
- DAC_READ_SEARCH
networks:
default:
我的问题,
- 为什么在同一个 Docker 主机上运行时需要特权?
- 我可以让它更严格(只给它需要的东西)吗?
【问题讨论】:
-
刚刚意识到反对者可能认为这属于 ServerFault。嗯..应该吗?