我正在尝试访问已经运行的特权 docker 容器中的串行端口(作为用户),但是我收到“权限被拒绝”错误,而权限应该正确设置。作为一个最小的可重现示例(假设串行设备连接到 /dev/ttyUSB0):
# start docker container with your user id, give it privileged access and mount /dev
docker run -itd --user $(id -u) --name test --privileged -v /dev:/dev ubuntu
# add user and add it to dialout (not sure if this is necessary as we have privileged access)
docker exec -it --user 0 test sh -c "groupadd -g $(id -g) user && useradd -m -u $(id -u) -g $(id -g) -G dialout user"
# install picocom to test serial connection
docker exec -it --user 0 test sh -c "apt update && apt install -y picocom"
# run picocom on /dev/ttyUSB0 to check if we can open it
docker exec -it test sh -c "picocom /dev/ttyUSB0"
但是当我尝试这个时,我得到了这个错误:
FATAL: cannot open /dev/ttyUSB0: Permission denied
当我以 root 身份执行命令时,或者当我直接在“docker run”命令中访问串行设备时,它工作正常,但我需要能够从已经运行的容器中访问串行设备。
有谁知道我错过了什么?