【Docker】コンテナにROOTで入る方法

【Docker】コンテナにROOTで入る方法

【Docker】コンテナにROOTで入る方法

Dockerfileの構築時にUserを決めてしまうことがあります。
その状態でいつものおまじないをするとROOTじゃないのでアプリインストールが出来ないなど不都合も発生します。

と言う事で、コンテナにROOTで入るための備忘録です。

参考用のdocker-compose.yml

こんな感じで作ったコンテナに対してROOTログインしてみたいと思います。
手段は2つあります。

  1. サービス名を指定して docker-compose で入る
  2. コンテナIDを指定してdocker で入る

docker-composeで入る方法

私は普段のログインでdocker-composeを利用しているので馴染みやすいです。

sudo {docker-compose呼出し} exec –user root {サービス名} bash

user rootで入るよと宣言してログインするサービス名を記載します。
具体的には下の様になります。

具体例で記載しているpythonは【docker-compose.yml】に記載したサービス名です。
docker-composeにパスを通している場合は[ /usr/local/bin/ ]省略してdocker-composeでOKです。

コンテナIDを指定してdockerで入る方法

コンテナIDを記載する必要があるので【sudo docker ps -a】で必ずIDを把握しておきましょう。

sudo docker exec  -it -u root {コンテナID} bash

具体的には下の様になります。

【コンテナID】はコンテナイメージ名やサービス名に置き換える事はできません。
なので、現在立ち上がっているコンテナIDを【sudo docker ps -a】で調べる必要があります。

複数のサイトを管理している場合は同じサービス名で動けるdocker-compose利用が共通化出来ていいですね。
でも文字数が少ないのはdockerの方です。

まとめ

今回のこの記事は私のポカから生まれたものです。

立ち上げたコンテナにvimが入ってなかったため インストールしようとした所「permission 確認しろ」とはねられたんです。で、(root権限あると思い込んでるので)命令の書き方変えてみたり、OS違う奴入れて命令違うのか?とか右往左往。

DockerfileでUser指定してるからコンテナにrootで入ってないし、root権限持たせて無いし、そもそもsudo入れてないし、と。まぁ一番はDockerfileでvim入れとけって事なんですけどね。と言う事で今はvimインストール書いたDockerfileに作り変えました。