我有一个通过串行端口进行通信的脚本(/dev/ttyUSB0
)。我想从 Docker 映像中运行它。但是我似乎没有权限从图像中执行此操作。我按照以下步骤操作:
在我的主机上,如果我运行ln -l /dev/ttyUSB0
I get:
crw-rw---- 1 root dialout 188, 0 jul 2 14:34 /dev/ttyUSB0
很好,这意味着为了读/写它,我需要要么root
,或其中的一部分dialout
group.
我成为我的主机中该组的成员:
$ sudo usermod -aG dialout $(whoami)
然后我注销并再次登录以使其生效。
之后,我确认我可以与/dev/ttyUSB0
来自我的主人。但是,如果我运行 docker 映像:
docker run --user=1000:1000 --rm=true --tty=true --privileged=true --device=/dev/ttyUSB0 --volume=<my_dir>:<my_dir> --workdir=<my_dir> <my_docker_image> <my_script>
然后它抱怨:
can't open device "/dev/ttyUSB0": Permission denied
但是如果我使用:--user=1000:20
,然后就可以正常工作了。群组20
is the dialout
group.
现在我的问题是:
为什么 Docker 不明白我的用户(1000)和组(1000)是dialout
group?
当我使用时这是有效的old泊坞窗(apt-get install docker-io, docker-engine
),但是更新到新版本后Docker CE
这停止工作了。
Setup:
- Ubuntu 16.04.2 LTS 内核 4.4.0-83-通用。
- Docker 版本:Docker 版本 17.06.0-ce,内部版本 02c1d87。
Thanks!