🐳
Dockerにec2-userを作る
dockerでホストと共有したボリュームに対してdocker内からファイルを作成する等のケースにおいて、ホスト側から見た作成したファイルの権限がrootになってしまうなど使い勝手が悪いことがあります。
dockerとはいえAWSで使っている以上、何かとec2-userを使いたい事って案外あるのではないでしょうか。
dockerにec2-userを作成して透過的に同じ権限で扱わせる方法です。
Dockerfile
ec2-userをDockerに作成します
FROM debian
ENV UNAME=ec2-user
ENV GID=1000
ENV UID=1000
RUN groupadd -g $GID -o $UNAME
RUN useradd -m -u $UID -g $GID -o -s /bin/bash $UNAME
# docker内でsudoできるように
RUN echo "$UNAME ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
Dockerに入る
-u ec2-user
オプションをつけて入ることでec2-userとしてログインできます
docker exec -i -t -u ec2-user CONTAINER_NAME bash --login
コマンドの実行
-u ec2-user
オプションをつけて実行することでec2-userとして実行できます
docker exec -i -t -u ec2-user CONTAINER_NAME bash -c "SOME COMMAND"
ログイン時のデフォルトをec2-userにする
DockerComposeのuserオプションやDockerfileのUSERコマンドで、-uオプションなしでec2-userをデフォルトにすることも可能です
Discussion