Kullanıcıları ve çalışma dizinini değiştirme

Docker'a Giriş

Tim Sangster

Software Engineer @ DataCamp

Dockerfile talimat etkileşimi

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ştirir
  • USER: Sonraki tüm talimatlar için kullanıcıyı değiştirir
Docker'a Giriş

WORKDIR - Çalışma dizinini değiştirme

Tü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/
Docker'a Giriş

Geçerli çalışma dizininde RUN

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
Docker'a Giriş

WORKDIR ile başlangıç davranışını değiştirme

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
Docker'a Giriş

Linux izinleri

  • İzinler kullanıcılara atanır.
  • Root, tüm izinlere sahip özel bir kullanıcıdır.

$$

En iyi uygulama

  • Belirli görevler için izinlere sahip yeni kullanıcılar oluşturmak üzere root kullanın.
  • Root kullanımını bırakın.
Docker'a Giriş

Görüntüde kullanıcıyı değiştirme

En iyi uygulama: Her şeyi root olarak çalıştırmayın

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
Docker'a Giriş

Konteynerde kullanıcıyı değiştirme

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
Docker'a Giriş

Özet

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ş

Uygulama zamanı!

Docker'a Giriş

Preparing Video For Download...