12
10

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とuserを切り替えてコンテナに入る

Last updated at Posted at 2021-12-08

はじめに

基本的に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でコンテナ内に入っていることが確認できる.
root.png

おまけ

またuserでコンテナ内に入りたいときはアタッチすればよい.

ホスト
$ docker attach [ContainerID or ContainerName]

まとめ

  • Dockerコンテナにrootとuserを切り替えて入る方法を紹介した.
  • Dockerfileの設定が面倒くさいと感じるのであれば,この方法はちょうど良いかもしれない.

参考サイト

Dockerコンテナからのデタッチ
dockerでvolumeをマウントしたときのファイルのowner問題
Root password inside a Docker container

12
10
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
12
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?