Introdução ao Docker
Tim Sangster
Software Engineer @ DataCamp
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çõesUSER: muda o usuário para as próximas instruçõesComeç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/
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
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
$$
Boa prática
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
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
| 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