昨日の記事で、Ubuntu に build-essential をインストールするDockerfile を書いた。コンテナ内の bash から操作することで C++ をコンパイルを行う。 timtoronto634.hatenablog.com
今日はその続きで、
- コンテナ内でrootではなくuserとして動き、コンパイルする
をできるようにした。
コンテナ内でユーザーとしてコンパイル
前回のままだと、コンテナ内ではrootユーザーとしてコンパイルを行っている。このままコンテナから出ると、(マウントしているので)実行ファイルは残っているのだが、host側から見たときに権限がrootになっている。これでは少し具合が悪い。毎回sudo chown等するのは論外である。
そこで、コンテナ内でユーザー権限で動けるようにして、かつdocker内でのユーザーIDをホストのユーザーと同じにする。
Dockerfile
FROM ubuntu:18.04 RUN apt-get update && \ apt-get install -y build-essential RUN mkdir /codes ARG UID=1000 # ホストのuser id を指定 # -m: create home RUN useradd -m -u ${UID} docker # switch to the added user USER ${UID}
1000 はホスト側のユーザーIDである linux であれば id
コマンドで確認できる。