ユーザーと作業ディレクトリの変更

Docker の紹介

Tim Sangster

Software Engineer @ DataCamp

Dockerfile命令の相互作用

FROM、RUN、およびCOPYはファイルシステムを介して相互作用します。

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

いくつかは他の指示に直接影響します:

  • WORKDIR: 以降のすべての指示の作業ディレクトリを変更します
  • USER: 以降のすべての指示についてユーザーを変更します
Docker の紹介

WORKDIR - 作業ディレクトリの変更

ファイルシステムのルートからすべてのパスを開始する場合:

COPY /projects/pipeline_v3/ /app/

長いパスを扱う場合に煩雑になります:

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

または、WORKDIR を使用してください:

WORKDIR /home/my_user_with_a_long_name/work/projects/
COPY /projects/pipeline_v3/ app/
Docker の紹介

現在の作業ディレクトリで を実行する

すべてのコマンドにフルパスを使用する代わりに:

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

WORKDIRを設定する:

WORKDIR /home/repl/projects/pipeline/
RUN ./init.sh
RUN ./start.sh
Docker の紹介

WORKDIR を使用して起動時の動作を変更する

フルパスを使用する代わりに:

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

WORKDIRを設定する:

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

コマンドの上書きもWORKDIRで実行されます:

docker run -it pipeline_image start.sh
Docker の紹介

Linuxの権限

  • 権限はユーザーに割り当てられます。
  • ルートは、すべての権限を持つ特別なユーザーです。

$$

ベストプラクティス

  • rootを使って特定のタスクに権限を持つ新しいユーザーを作成すること。
  • root の使用をやめてください。
Docker の紹介

イメージ内のユーザーの変更

ベストプラクティス すべてをrootで実行しないでください

Ubuntu -> デフォルトでは管理者

FROM ubuntu         --> Root user by default
RUN apt-get update  --> Run as root

USER Dockerfileの命令:

FROM ubuntu         --> Root user by default
USER repl           --> Changes the user to repl
RUN apt-get update  --> Run as repl
Docker の紹介

コンテナ内のユーザーの変更

Dockerfileでユーザーをreplに設定する場合:

FROM ubuntu         --> Root user by default
USER repl           --> Changes the user to repl
RUN apt-get update  --> Run as repl 

repl ユーザーでもコンテナーを起動します:

docker run -it ubuntu bash
repl@container: whoami
repl
Docker の紹介

概要

使用法 Dockerfile 命令
現在の作業ディレクトリを変更する WORKDIR <path>
現在のユーザーを変更 USER <user-name>
Docker の紹介

練習の時間です!

Docker の紹介

Preparing Video For Download...