🐳

Dockerにec2-userを作る

2024/11/27に公開

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