AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 477551
Accepted
Flimm
Flimm
Asked: 2014-06-07 00:17:43 +0800 CST2014-06-07 00:17:43 +0800 CST 2014-06-07 00:17:43 +0800 CST

Como posso usar o docker sem sudo?

  • 772

Nas páginas de documentação do Docker, todos os comandos de exemplo são mostrados sem sudo, como este:

docker ps

No Ubuntu, o binário é chamado de docker.io. Também não funciona sem sudo:

sudo docker.io ps

Como posso configurar o Docker para não precisar prefixar todos os comandos do Docker com sudo?

docker
  • 5 5 respostas
  • 1320297 Views

5 respostas

  • Voted
  1. Best Answer
    Rinzwind
    2014-06-07T00:24:12+08:002014-06-07T00:24:12+08:00

    Boas notícias: o novo docker (versão 19.03 (atualmente experimental)) poderá rodar sem root, negando os problemas que podem ocorrer usando um usuário root. Chega de mexer com permissões elevadas, root e qualquer coisa que possa abrir sua máquina quando você não quiser.

    Vídeo sobre isso de [DockerCon 2019] Hardening Docker daemon com modo Rootless

    Algumas advertências para o modo Docker sem raiz

    Os engenheiros do Docker dizem que o modo sem raiz não pode ser considerado um substituto para o conjunto completo de recursos do mecanismo Docker. Algumas limitações para o modo sem raiz incluem:

    • controles de recursos do cgroups, perfis de segurança do apparmor, checkpoint/restauração, redes de sobreposição etc. não funcionam no modo sem raiz.
    • A exposição de portas de contêineres atualmente requer um processo auxiliar socat manual.
    • Apenas distribuições baseadas no Ubuntu suportam sistemas de arquivos de sobreposição no modo sem raiz.
    • No momento, o modo sem raiz é fornecido apenas para compilações noturnas que podem não ser tão estáveis ​​quanto você está acostumado.

    A partir do docker 19.3, isso é obsoleto (e mais perigoso do que o necessário):

    O manual do docker tem isso a dizer sobre isso:

    Dando acesso não root

    O daemon do docker sempre é executado como usuário root e, desde a versão 0.5.2 do Docker, o daemon do docker se vincula a um soquete Unix em vez de uma porta TCP. Por padrão, esse soquete Unix é de propriedade do usuário root e, portanto, por padrão, você pode acessá-lo com sudo.

    A partir da versão 0.5.3, se você (ou seu instalador do Docker) criar um grupo Unix chamado docker e adicionar usuários a ele, o daemon do docker fará com que a propriedade do soquete Unix seja lida/gravável pelo grupo do docker quando o daemon for iniciado . O daemon docker deve sempre ser executado como usuário root, mas se você executar o cliente docker como um usuário no grupo docker, não será necessário adicionar sudo a todos os comandos do cliente. A partir da versão 0.9.0, você pode especificar que um grupo diferente do docker deve possuir o soquete Unix com a opção -G.

    Aviso: o grupo docker (ou o grupo especificado com -G) é equivalente à raiz; veja os detalhes do Docker Daemon Attack Surface e esta postagem de blog sobre Por que não permitimos que usuários não root executem o Docker no CentOS, Fedora ou RHEL (obrigado michael-n).

    Na versão recente do modo experimental sem raiz no GitHub , os engenheiros mencionam que o modo sem raiz permite executar o dockerd como um usuário sem privilégios, usando user_namespaces(7), mount_namespaces(7), network_namespaces(7).

    Os usuários precisam executar o dockerd-rootless.sh em vez do dockerd.

    $ dockerd-rootless.sh --experimental
    

    Como o modo Rootless é experimental, os usuários precisam sempre executar o dockerd-rootless.sh com –experimental.


    Importante ler: etapas de pós-instalação para Linux (também vincula aos detalhes do Docker Daemon Attack Surface ).

    Gerenciar o Docker como um usuário não root

    O daemon docker se liga a um soquete Unix em vez de uma porta TCP. Por padrão, esse soquete Unix é de propriedade do usuário root e outros usuários só podem acessá-lo usando sudo. O daemon docker sempre é executado como usuário root.

    Se você não quiser usar o sudo ao usar o comando docker, crie um grupo Unix chamado docker e adicione usuários a ele. Quando o daemon do docker é iniciado, ele torna a propriedade do soquete Unix de leitura/gravação pelo grupo do docker.


    • Adicione o grupo docker se ele ainda não existir:

       sudo groupadd docker
      
    • Adicione o usuário conectado "$USER" ao grupo docker. Altere o nome de usuário para corresponder ao seu usuário preferido se não quiser usar seu usuário atual:

       sudo gpasswd -a $USER docker
      
    • Faça a newgrp dockerou faça logout/login para ativar as alterações nos grupos.

    • Você pode usar

       docker run hello-world
      

      para verificar se você pode executar o docker sem sudo.

    • 1411
  2. Rohini Choudhary
    2016-02-28T11:57:56+08:002016-02-28T11:57:56+08:00

    Para executar o comando docker sem sudo, você precisa adicionar seu usuário (que tem privilégios de root) ao grupo docker. Para isso execute o seguinte comando:

     sudo usermod -aG docker $USER
    

    Agora, faça o logout do usuário e faça login novamente. Esta solução é bem explicada aqui com o processo de instalação adequado.

    • 379
  3. Christian Hujer
    2017-12-02T08:08:37+08:002017-12-02T08:08:37+08:00

    O mecanismo pelo qual adicionar um usuário ao grupo dockerconcede permissão para executar o docker é obter acesso ao soquete do docker em /var/run/docker.sock. Se o sistema de arquivos que contém /var/runfoi montado com ACLs habilitadas, isso também pode ser feito por meio de ACLs.

    sudo setfacl -m user:$USER:rw /var/run/docker.sock
    

    Estou apenas incluindo isso para completar.

    Em geral, recomendo evitar ACLs sempre que uma boa alternativa baseada em grupos estiver disponível: É melhor se os privilégios em um sistema puderem ser entendidos observando apenas as associações de grupo. Ter que varrer o sistema de arquivos em busca de entradas ACL para entender os privilégios do sistema é um fardo adicional para as auditorias de segurança.

    Aviso 1 : Isso tem a mesma rootequivalência que adicionar $USERao dockergrupo. Você ainda pode iniciar um contêiner de uma maneira que tenha rootacesso ao sistema de arquivos do host.

    Aviso 2 : As ACLs são significativamente mais difíceis para auditorias de segurança do que a segurança baseada em grupo. Provavelmente, evite ACLs, se possível, quando você puder usar grupos, pelo menos em ambientes relevantes para auditoria.

    • 138
  4. miu
    2020-11-20T04:06:23+08:002020-11-20T04:06:23+08:00

    Depois de criar o grupo docker e adicionar meu usuário a ele com

    sudo groupadd docker
    sudo usermod -aG docker $USER
    

    ... Eu ainda tive que dar ao /var/run/docker.socksoquete e /var/run/dockerao diretório as devidas permissões para fazê-lo funcionar:

    sudo chown root:docker /var/run/docker.sock
    sudo chown -R root:docker /var/run/docker
    

    Saia e faça login novamente (com esse usuário), então você poderá executar comandos docker sem sudo:

    docker run hello-world
    

    BTW: Isso foi corrigido no Ubuntu 21.10 e é necessário apenas para versões do Ubuntu inferiores a isso.

    • 29
  5. ostrokach
    2021-03-23T10:29:50+08:002021-03-23T10:29:50+08:00

    Os contêineres do Docker precisam ser executados por um usuário root. Você pode se adicionar ao dockergrupo (por exemplo, executando sudo usermod -aG docker $USER), mas isso facilita para qualquer pessoa com acesso à $USERconta obter acesso root à máquina (por exemplo, montando um volume root em um contêiner privilegiado).

    Uma maneira mais consciente de segurança de executar contêineres do Docker como um usuário não root seria usar o Podman: https://podman.io/ . Do seu site:

    O Podman é um mecanismo de contêiner sem daemon para desenvolver, gerenciar e executar contêineres OCI em seu sistema Linux. Os contêineres podem ser executados como root ou no modo rootless . Simplificando: alias docker=podman.

    Outra alternativa é o Singularity, que é mais comumente implantado em ambientes HPC: https://sylabs.io/ .

    • 5

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve