docker运行 – 用户组不按预期工作?
我有一个通过串口( /dev/ttyUSB0
)进行通信的脚本。 我想从Docker镜像中运行它。 不过,我似乎没有权限从图像中做到这一点。 我遵循这些步骤:
在我的主机上,如果我运行ln -l /dev/ttyUSB0
我得到:
crw-rw---- 1 root dialout 188, 0 jul 2 14:34 /dev/ttyUSB0
好,这意味着为了读/写,我需要是root
,或dialout
组的一部分。
我在我的主持人成为这个组的成员:
$ sudo usermod -aG dialout $(whoami)
然后我注销并重新login以使其生效。
之后,我validation了我可以与我的主机上的/dev/ttyUSB0
完美通信。 但是,如果我运行泊坞窗图像:
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
是dialout
组。
现在我的问题:
为什么Docker不知道我的用户(1000)和组(1000)是dialout
组的一部分?
当我使用旧的docker工具( apt-get install docker-io, docker-engine
)时,这是工作的,但是在更新到新的Docker CE
这停止了工作。
设置 :
- Ubuntu 16.04.2 LTS Kernel 4.4.0-83-generic。
- Docker版本:Docker版本17.06.0-ce,build 02c1d87。
谢谢!