Trocando usuário e diretório de trabalho

Introdução ao Docker

Tim Sangster

Software Engineer @ DataCamp

Interação entre instruções do Dockerfile

FROM, RUN e COPY interagem pelo sistema de arquivos.

COPY /projects/pipeline_v3/start.sh /app/start.sh
RUN /app/start.sh

Algumas instruções influenciam as seguintes diretamente:

  • WORKDIR: muda o diretório de trabalho para as próximas instruções
  • USER: muda o usuário para as próximas instruções
Introdução ao Docker

WORKDIR - Mudando o diretório de trabalho

Começar todos os caminhos na raiz do sistema:

COPY /projects/pipeline_v3/ /app/

Fica poluído com caminhos longos:

COPY /projects/pipeline_v3/ /home/my_user_with_a_long_name/work/projects/app/

Alternativa: use WORKDIR:

WORKDIR /home/my_user_with_a_long_name/work/projects/
COPY /projects/pipeline_v3/ app/
Introdução ao Docker

RUN no diretório de trabalho atual

Em vez de usar o caminho completo em cada comando:

RUN /home/repl/projects/pipeline/init.sh
RUN /home/repl/projects/pipeline/start.sh

Defina o WORKDIR:

WORKDIR /home/repl/projects/pipeline/
RUN ./init.sh
RUN ./start.sh
Introdução ao Docker

Mudando o comando inicial com WORKDIR

Em vez de usar o caminho completo:

CMD /home/repl/projects/pipeline/start.sh

Defina o WORKDIR:

WORKDIR /home/repl/projects/pipeline/
CMD start.sh

Comando sobrescrito também roda no WORKDIR:

docker run -it pipeline_image start.sh
Introdução ao Docker

Permissões no Linux

  • Permissões são atribuídas a usuários.
  • Root é um usuário especial com todas as permissões.

$$

Boa prática

  • Use root para criar usuários com permissões para tarefas específicas.
  • Pare de usar root.
Introdução ao Docker

Trocando o usuário na imagem

Boa prática: não rode tudo como root

Ubuntu -> root por padrão

FROM ubuntu         --> Usuário root por padrão
RUN apt-get update  --> Executa como root

Instrução USER no Dockerfile:

FROM ubuntu         --> Usuário root por padrão
USER repl           --> Troca o usuário para repl
RUN apt-get update  --> Executa como repl
Introdução ao Docker

Trocando o usuário no contêiner

Dockerfile definindo o usuário como repl:

FROM ubuntu         --> Usuário root por padrão
USER repl           --> Troca o usuário para repl
RUN apt-get update  --> Executa como repl 

Também inicia contêineres com o usuário repl:

docker run -it ubuntu bash
repl@container: whoami
repl
Introdução ao Docker

Resumo

Uso Instrução do Dockerfile
Mudar o diretório de trabalho atual WORKDIR <path>
Mudar o usuário atual USER <user-name>
Introdução ao Docker

Vamos praticar!

Introdução ao Docker

Preparing Video For Download...