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 ,那么它工作正常。 组20dialout组。

现在我的问题:

为什么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。

谢谢!