はじめに
基本的にDockerコンテナを起動し,コンテナ内に入るとrootになる.
この状態でファイル作成をすると所有権がrootになり,扱いが面倒になる.
一方,コンテナ内にuserで入ることも可能だが,apt updateなどの操作が出来なくなってしまう.
Dockerfileでうまいこと調整すればよいのかもしれないが,今回はコマンドだけで完結する内容を書き残す.
できること
基本的にuser権限でコンテナに入ることができるようになり,root権限が必要なときは適宜切り替えることができる.
実行環境
OS: Ubuntu 20.04 LTS
1. Dockerコンテナを起動し,userで入る
以下の記事のうまくいく方法2を参考にした.
dockerでvolumeをマウントしたときのファイルのowner問題
こちらの記事から対象となるコマンドを引用する.
ホスト
docker run -it -v /etc/group:/etc/group:ro -v /etc/passwd:/etc/passwd:ro -u $(id -u $USER):$(id -g $USER) ubuntu bash
実行すると,userでコンテナ内に入っていることが確認できる.
![user.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472706/ce00d42f-e255-5ffc-5d5a-63407d7490d7.png)
## 2. コンテナからデタッチ
コンテナに入っている状態で以下のショートカットを入力.
```:コンテナ
[control-P] [control-Q]
3. rootでコンテナ内に入る
Docker execで起動してあるコンテナにrootとして入る.
$ docker exec -u 0 -it container_name bash
実行すると,rootでコンテナ内に入っていることが確認できる.
おまけ
またuserでコンテナ内に入りたいときはアタッチすればよい.
$ docker attach [ContainerID or ContainerName]
まとめ
- Dockerコンテナにrootとuserを切り替えて入る方法を紹介した.
- Dockerfileの設定が面倒くさいと感じるのであれば,この方法はちょうど良いかもしれない.
参考サイト
Dockerコンテナからのデタッチ
dockerでvolumeをマウントしたときのファイルのowner問題
Root password inside a Docker container