dockerのコンテナのrootユーザを、ホストOSの一般ユーザにマッピングする方法
Linuxではコンテナで作成したファイルなどはホスト側ではrootユーザでしか扱えないため、ファイルをマウントして開発する場合はいちいちroot権限で書き込みする必要があります。
ホスト側の一般ユーザを、新しくコンテナの一般ユーザとして作ることもできますが、コンテナ側でroot権限が使えたほうが良い場合が多いです。
そこで、ホスト側の一般ユーザのuidとgidを、コンテナのrootユーザにマッピングしてしまえば、楽です。
コレを行うと、今までのdockerイメージやコンテナが全て消えてしまうので気をつけてください。
------------追記------------
Dockerで作ったコンテナをそのままimageにしてデプロイする場合は、セキュリティのためコンテナ内にユーザを作成してください。
ここに書いてある方法はあくまでもローカル開発時のみで実行してください。
## 環境
Ubuntu 18.04.3 LTS
方法
まず、自分のIDを確認します。
$ id
uid=1000(<username>) gid=1000(<username>) groups=1000(<username>),...
のところは各々のユーザー名が表示されていると思います。
次に、/etc 内の subuid と subgid ファイルに以下のように書き込みます。
のところは自分のものを書いてください
<username>:1000:65536
<username>:1000:65536
なければ新しく作り、二つとも同じように記述してください。
次に、/etc/docker 内の daemon.json に次のように記述してください。ファイルはなければ作ってください。
のところには自分のユーザ名を入れてください。
snapの場合は /snap/docker/current/config/daemon.json です。
{
“userns-remap”:”<username>”
}
そして
$ service docker restart
または、snapでDockerを入れている場合は
$ sudo systemctl daemon-reload
$ sudo systemctl restart snap.docker.dockerd
でDockerを再起動したら完了です。
参考
Code Example Docker 17 - Isolate containers with a user namespace