Docker'a Giriş
Tim Sangster
Software Engineer @ DataCamp
FROM, RUN ve COPY dosya sistemi üzerinden etkileşir.
COPY /projects/pipeline_v3/start.sh /app/start.sh
RUN /app/start.sh
Bazıları diğer talimatları doğrudan etkiler:
WORKDIR: Sonraki tüm talimatlar için çalışma dizinini değiştirirUSER: Sonraki tüm talimatlar için kullanıcıyı değiştirirTüm yolları dosya sisteminin kökünden başlatmak:
COPY /projects/pipeline_v3/ /app/
Uzun yollarla çalışırken karmaşıklaşır:
COPY /projects/pipeline_v3/ /home/my_user_with_a_long_name/work/projects/app/
Alternatif olarak WORKDIR kullanın:
WORKDIR /home/my_user_with_a_long_name/work/projects/
COPY /projects/pipeline_v3/ app/
Her komut için tam yolu kullanmak yerine:
RUN /home/repl/projects/pipeline/init.sh
RUN /home/repl/projects/pipeline/start.sh
WORKDIR ayarlayın:
WORKDIR /home/repl/projects/pipeline/
RUN ./init.sh
RUN ./start.sh
Tam yolu kullanmak yerine:
CMD /home/repl/projects/pipeline/start.sh
WORKDIR ayarlayın:
WORKDIR /home/repl/projects/pipeline/
CMD start.sh
Geçersiz kılınan komut da WORKDIR içinde çalışır:
docker run -it pipeline_image start.sh
$$
En iyi uygulama
Ubuntu -> varsayılan olarak root
FROM ubuntu --> Varsayılan kullanıcı root
RUN apt-get update --> Root olarak çalışır
USER Dockerfile talimatı:
FROM ubuntu --> Varsayılan kullanıcı root
USER repl --> Kullanıcıyı repl yapar
RUN apt-get update --> repl olarak çalışır
Dockerfile kullanıcıyı repl olarak ayarlar:
FROM ubuntu --> Varsayılan kullanıcı root
USER repl --> Kullanıcıyı repl yapar
RUN apt-get update --> repl olarak çalışır
Ayrıca konteynerleri repl kullanıcısıyla başlatır:
docker run -it ubuntu bash
repl@container: whoami
repl
| Kullanım | Dockerfile Talimatı |
|---|---|
| Geçerli çalışma dizinini değiştir | WORKDIR <path> |
| Geçerli kullanıcıyı değiştir | USER <user-name> |
Docker'a Giriş