Olá, pessoal, tudo bem?
Assisti ao vídeo publicado pelo Diolinux ensinando a usar um container Docker com uma imagem virtualizada do Windows e achei muito legal.
Video postado ontem no canal do Diolinux.
Github: GitHub - dockur/windows: Windows in a Docker container.
SO: Fedora 39
Atualizacao: Estou recebendo o mesmo erro do kvm no codigo abaixo
Consegui rodar normalmente o windows com a configuração padrão usando o comando run:
docker run -it --rm --name windows -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 120 dockurr/windows
No entanto, quando tento usar o comando docker-compose up para iniciar um container através de um arquivo .yml salvo em um diretório local, estou tento esse erro: ERROR: for windows Cannot start service windows: error gathering device information while adding custom device “/dev/kvm”: no such file or directory ERROR: for windows Cannot start service windows: error gathering device information while adding custom device “/dev/kvm”: no such file or directory
ERROR: Encountered errors while bringing up the project.
Já gastei algumas horas pesquisando à respeito dos erros, verifiquei que estou com a virtualização habilitada pela BIOS.
Também acessei estes comandos na documentação do Fedora Project:
Não sei se isso seria algo simples de resolver, de alguma forma, o Fedora nao reconhece essa parte do arquivo de configuração do container .yml
devices:
- /dev/kvm
Se for possível rodar normalmente uma .iso de windows que nao necessite do preenchimento das configuracoes através dos Boxes, eu utilizaria também essa opção.
Basicamente gostaria de rodar um Windows 10 + Power BI para desenvolvimento de alguns projetos dado que o Power BI nativamente não é suportado em Linux/Mac e alguns recursos só existem no Power BI em desktop, não sendo possível desenvolver no Power BI web.
Bruno, obrigado pela sugestão, só consegui agora, realmente eu nao estava colocando o comando sudo, e também não estava inicializando o docker através dos comando:
Iniciar o serviço systemctl start docker.service
O erro que você encontrou está relacionado ao Docker não conseguir acessar o dispositivo KVM (Kernel-based Virtual Machine) /dev/kvm no seu sistema Fedora. O dispositivo /dev/kvm é usado para virtualização de hardware, que o Docker pode exigir ao executar determinados containers.
Quando você executou o comando com --device=/dev/kvm, você permitiu explicitamente que o Docker acessasse este dispositivo, o que resolveu o erro.
Agora, quanto ao aspecto de segurança:
Acesso ao Dispositivo (--device=/dev/kvm): Conceder ao Docker acesso ao /dev/kvm pode ser considerado um risco de segurança, pois permite que o container interaja com as capacidades de virtualização de hardware do host. Se um ator malicioso ganhar controle sobre o container, ele pode ser capaz de explorar esse acesso para realizar operações de virtualização não autorizadas no seu sistema.
Modo Privilegiado (--privileged): Usar --privileged dá ao container acesso total aos dispositivos e capacidades do sistema host, o que aumenta significativamente o risco de segurança. Geralmente, é recomendado evitar o uso de --privileged a menos que seja absolutamente necessário.
Capacidade NET_ADMIN (--cap-add NET_ADMIN): Esta capacidade permite que o container administre interfaces de rede. Embora seja menos arriscado do que conceder acesso total a dispositivos ou usar --privileged, ainda fornece ao container permissões de rede elevadas.
Recomendações:
Minimizar Privilégios: Em vez de usar --privileged, tente identificar e conceder apenas as capacidades e acesso a dispositivos específicos que o container realmente precisa.
Usar AppArmor ou SELinux: O Fedora e outras distribuições Linux usam módulos de segurança como AppArmor ou SELinux para fornecer uma camada adicional de segurança. Certifique-se de que esses módulos de segurança estejam configurados corretamente para limitar as ações dos containers Docker.
Atualizar e Monitorar Regularmente: Mantenha seu sistema, Docker e containers atualizados com as últimas correções de segurança. Monitore as atividades dos containers e revise regularmente os logs do Docker em busca de atividades suspeitas.
Isolar Containers: Use as características de isolamento de rede e armazenamento do Docker para garantir que os containers estejam devidamente isolados entre si e do sistema host.
Em resumo, enquanto conceder ao Docker acesso ao /dev/kvm e usar --privileged pode resolver certos problemas, isso introduz riscos de segurança. É essencial equilibrar conveniência com segurança e adotar uma abordagem de privilégio mínimo ao configurar containers Docker.
O comando systemctl start docker.service inicia o serviço Docker sem as opções adicionais de privilégios ou acesso a dispositivos que foram especificadas no comando docker run.
Quando você inicia o serviço Docker usando systemctl, ele executa com as configurações padrão definidas no arquivo de configuração do Docker (daemon.json), que geralmente não incluem o modo --privileged ou o acesso ao dispositivo /dev/kvm.
Isso significa que o Docker será iniciado com as permissões e configurações padrão do sistema, que são geralmente mais seguras do que quando se usa --privileged ou outros modos de acesso elevado.
Portanto, se você pode executar suas tarefas sem --privileged ou acesso ao dispositivo /dev/kvm, é recomendado usar o serviço Docker iniciado através do systemctl start docker.service para garantir uma configuração mais segura e minimizar os riscos de segurança.