如何解决如何在 Docker 容器中指定已挂载设备的用户和组所有者?
我正在使用 VSCode Devcontainer 并且:
- 我需要从容器内访问
/dev/kvm
- 我不希望容器中的用户是
root
所以,我用 --device=/dev/kvm
启动容器,我可以访问它,但是我不能使用它,因为它归 root
和 kvm
组所有主持人。
vscode@c017a6dc1bc0:/workspaces/project$ ls -l /dev/kvm
crw-rw---- 1 root 108 10,232 May 1 09:56 /dev/kvm
108
id 对应于主机上的 kvm
组,但它没有映射到容器中的任何内容。即使我创建了组 kvm
它也不起作用。而且我不想对 108
进行硬编码,因为如果我曾经在另一台计算机上使用 Dockerfile,这不可靠。
一种可能性是从容器内运行 chown myuser /dev/kvm
,但 myuser
是非 root 用户,我希望 kvm
设备在容器启动后自动可用。>
我知道 VScode 中存在 postCreateCommand
,但它也不会以 root 身份执行,因此不允许我更改 /dev/kvm
组。
FROM ubuntu:20.04
ARG USERNAME=myuser
ARG USER_UID=1000
ARG USER_GID=$USER_UID
RUN groupadd --gid $USER_GID $USERNAME \
&& useradd --uid $USER_UID --gid $USER_GID -m $USERNAME
# && groupadd -r kvm \
# && adduser $USERNAME kvm \
# && gpasswd -a $USERNAME kvm
USER $USERNAME
{
"name": "Test container","build": {
"dockerfile": "Dockerfile"
},"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
},"remoteUser": "myuser","runArgs": [
"--device=/dev/kvm"
]
}
在这种情况下,最佳实践是什么?我应该以某种方式将 /etc/group
安装在容器或其他东西中吗?有没有办法从 Dockerfile
更改由命令行安装的设备的组所有者?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。