Não execute isso como Root! - Imagem do Docker

2

Estou executando o Ubuntu xenia no meu contêiner docker (este é um contêiner em execução no meu host do OS X VM). Quando você executa o comando docker run que criou meu contêiner, ele faz o login como root.

Então, quando tento instalar o Linuxbrew depois de tudo isso e depois de instalar o curl e o ruby no meu contêiner via app-gret, recebo o erro don't run this as root! quando tento instalar o Linuxbrew:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/linuxbrew/go/install)"

Eu quero ser capaz de executar isso de alguma forma. Se o docker run me registra como root, quais são minhas opções aqui para contornar essa limitação no root, de modo que ainda posso executar esse comando? Se o docker sempre me conecta como root em um contêiner, o que as pessoas geralmente fazem nas situações em que desejam instalar coisas como essa, como um usuário não-root em um container com o Ubuntu?

Observação : sou novo no Ubuntu, no Linux e no docker. Então, isso implica que eu posso não estar ciente de todos os princípios básicos e há muito o que saber.

    
por PositiveGuy 03.01.2016 / 00:58

4 respostas

3

Uma pesquisa no Google leva-me a esta . Eu pessoalmente não acho que é uma solução legal e limpa, mas deve ser capaz de fazer o trabalho. O que esta solução faz é o seguinte:

Em vez de iniciar diretamente o programa no contêiner, há um lançamento de duas etapas em andamento: Primeiro, um script pequeno é iniciado com o docker, que basicamente cria um novo usuário no contêiner e executa o programa principal como este novo usuário. Este é o script que é usado lá, /home/r/script.sh sendo o programa que deve ser iniciado:

#!/bin/bash
adduser --disabled-password --gecos '' r
adduser r sudo
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
su -m r -c /home/r/script.sh

Se você quer um shell como esse usuário, você pode colocar o bash em seu lugar.

    
por s3lph 03.01.2016 / 01:14
5

Você pode usar o comando USER para alterar os comandos do usuário. Claro que você precisa criar o usuário primeiro, então o seu Dockerfile conteria algo assim:

RUN useradd --system -s /sbin/nologin someuser

USER someuser
    
por Andreas Veithen 03.01.2016 / 21:39
1

Você pode usar:

useradd -m linuxbrew
sudo -u linuxbrew -i /bin/bash
PATH=~/.linuxbrew/bin:/usr/sbin:/usr/bin:/sbin:/bin  
yes | ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/linuxbrew/go/install)"

Aqui é o link para a documentação original do Linuxbrew

    
por NexusStar 13.02.2016 / 00:23
0

Como você pode fazer logout do root a partir da linha de comando, execute o primeiro comando que você logou como root, digite exit, e então execute o comando que diz "Não rode este como root! "

    
por TyGuy1016 03.01.2016 / 05:50