2

我正在使用VSCode Devcontainer并且:

  • 我需要/dev/kvm从容器内访问
  • 我不希望容器中的用户成为root

所以,我启动容器--device=/dev/kvm并且我可以访问它,但是我不能使用它,因为它是由roothost中的kvmgroup拥有的。

vscode@c017a6dc1bc0:/workspaces/project$ ls -l /dev/kvm
crw-rw---- 1 root 108 10, 232 May  1 09:56 /dev/kvm

108id 对应于主机上的组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更改命令行安装的设备的组所有者?

4

0 回答 0