[解決済み] Dockerイメージ内のユーザーを非rootユーザーに切り替える
質問
SSH証明書をセットアップするために、ユーザーをtomcat7ユーザーに切り替えようとしています。
このとき
su tomcat7
を実行しても、何も起こりません。
whoami
を実行した後、まだrootになる。
su tomcat7
を実行すると
more /etc/passwd
とすると、以下のような結果が得られ、tomcat7ユーザが存在することが明らかになりました。
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
messagebus:x:101:104::/var/run/dbus:/bin/false
colord:x:102:105:colord colour management daemon,,,:/var/lib/colord:/bin/false
saned:x:103:106::/home/saned:/bin/false
tomcat7:x:104:107::/usr/share/tomcat7:/bin/false
私が回避しようとしているのは、Hudsonのこのエラーです。
Command "git fetch -t git@________.co.za:_______/_____________.git +refs/heads/*:refs/remotes/origin/*" returned status code 128: Host key verification failed.
これは私のDockerfileで、既存のhudsonのwarファイルとtarで保存された設定を受け取り、イメージを構築します。hudsonは正常に動作しますが、ユーザーtomcat7用の証明書が存在しないため、gitにアクセスできません。
FROM debian:wheezy
# install java on image
RUN apt-get update
RUN apt-get install -y openjdk-7-jdk tomcat7
# install hudson on image
RUN rm -rf /var/lib/tomcat7/webapps/*
ADD ./ROOT.tar.gz /var/lib/tomcat7/webapps/
# copy hudson config over to image
RUN mkdir /usr/share/tomcat7/.hudson
ADD ./dothudson.tar.gz /usr/share/tomcat7/
RUN chown -R tomcat7:tomcat7 /usr/share/tomcat7/
# add ssh certificates
RUN mkdir /root/.ssh
ADD ssh.tar.gz /root/
# install some dependencies
RUN apt-get update
RUN apt-get install --y maven
RUN apt-get install --y git
RUN apt-get install --y subversion
# background script
ADD run.sh /root/run.sh
RUN chmod +x /root/run.sh
# expose port 8080
EXPOSE 8080
CMD ["/root/run.sh"]
Dockerの最新版(Docker version 1.0.0, build 63fe64c/1.0.0) を使用していますが、これはDockerのバグでしょうか、それともDockerfileに何か記入漏れがあるのでしょうか?
どのように解決するのですか?
この場合
su
の中で
ドッカーファイル
を使用する必要があります。
USER
という命令をDockerfileに記述してください。
の各ステージで Dockerfile ビルドの各段階で、新しいコンテナが作成されます。
例えば
RUN whoami
RUN su test
RUN whoami
これだと、決してユーザーが
test
になることはありません。新しいコンテナは2番目のwhoamiで生成されます。出力は両方とも root になります (もちろん、事前に USER を実行しない限り)。
しかし、もしあなたがそうするなら
RUN whoami
USER test
RUN whoami
あなたは
root
次に
test
.
また、sudo を使って別のユーザーとしてコマンドを実行するには、次のようにします。
sudo -u test whoami
でも、公式にサポートされている命令を使った方が良さそうです。
関連
-
Linux Mintで入力メソッドを削除する方法は?Linux Mintで冗長な入力メソッドを削除するためのヒント
-
[解決済み] bash sh - command not found [重複].
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] Dockerでイメージのクリーンビルドを強制する方法
-
[解決済み] Dockerイメージの削除方法について教えてください。
-
[解決済み] Docker リポジトリ名の変更、イメージ名の変更方法は?
-
[解決済み] Dockerイメージをコンテナとして実行する
-
[解決済み] dockerイメージの内容を確認する方法
-
[解決済み】Dockerイメージとコンテナの違いは何ですか?
-
[解決済み】Dockerコンテナ内のRootパスワードについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ゼロからLinuxのisoイメージを作る方法(グラフィックチュートリアル)
-
Manjaro linuxでマウスの速度を設定する方法は?Manjaroのマウスのカーソル速度を設定する方法に関するヒント
-
Linux NICがRTNETLINK answersというエラーで起動できない場合、どうすればよいですか?ファイルが存在するか?
-
Kali Linuxのデスクトップの外観スタイルを変更するには? KALIの外観の最適化のヒント
-
Linux Mintでフェード効果をオンにする方法は?
-
deepin20のデスクトップアイコンのスタイルを変更する方法は?deepinのアイコンテーマを変更するためのヒント
-
ubuntu 12.04 eclipse でプログラム g++ がパスに見つからなかったと報告される。
-
Centos7 dns service named installation, encountered ** server can't find xxx.com: NXDOMAIN問題
-
リクエスト・エンティティが大きすぎる問題の解決策
-
[解決済み] mkdirのオプションが明確でない