5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

dockerのコンテナのrootユーザを、ホストOSの一般ユーザにマッピングする方法

Last updated at Posted at 2019-11-02

dockerのコンテナのrootユーザを、ホストOSの一般ユーザにマッピングする方法

Linuxではコンテナで作成したファイルなどはホスト側ではrootユーザでしか扱えないため、ファイルをマウントして開発する場合はいちいちroot権限で書き込みする必要があります。
ホスト側の一般ユーザを、新しくコンテナの一般ユーザとして作ることもできますが、コンテナ側でroot権限が使えたほうが良い場合が多いです。
そこで、ホスト側の一般ユーザのuidとgidを、コンテナのrootユーザにマッピングしてしまえば、楽です。
コレを行うと、今までのdockerイメージやコンテナが全て消えてしまうので気をつけてください。

------------追記------------
Dockerで作ったコンテナをそのままimageにしてデプロイする場合は、セキュリティのためコンテナ内にユーザを作成してください。
ここに書いてある方法はあくまでもローカル開発時のみで実行してください。

## 環境

Ubuntu 18.04.3 LTS

方法

まず、自分のIDを確認します。

terminal

$ id
uid=1000(<username>) gid=1000(<username>) groups=1000(<username>),...

のところは各々のユーザー名が表示されていると思います。

次に、/etc 内の subuid と subgid ファイルに以下のように書き込みます。
のところは自分のものを書いてください

/etc/subuid
<username>:1000:65536
/etc/subgid
<username>:1000:65536

なければ新しく作り、二つとも同じように記述してください。
次に、/etc/docker 内の daemon.json に次のように記述してください。ファイルはなければ作ってください。
のところには自分のユーザ名を入れてください。
snapの場合は /snap/docker/current/config/daemon.json です。

/etc/docker/daemon.json
{
    “userns-remap”:”<username>”
}

そして

terminal

$ 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

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?