Benutzer in das Docker-Image zu einem Nicht-Root-Benutzer wechseln

Ich versuche, Benutzer wechseln um den Benutzer tomcat7, um auf setup-SSH-Zertifikaten.

Wenn ich su tomcat7 passiert nichts.

whoami noch ruturns Wurzel nach su tomcat7

Tun, eine more /etc/passwd bekomme ich das folgende Ergebnis, das deutlich zeigt, dass ein tomcat7 Benutzer vorhanden ist:

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

Was ich versuche zu umgehen, ist dieser Fehler in Hudson:

Command "git fetch -t git@________.co.za:_______/_____________.git +refs/heads/*:refs/remotes/origin/*" returned status code 128: Host key verification failed.

Dies ist mein Dockerfile, es dauert ein vorhandenes hudson war-Datei und die config, die ist asphaltiert und baut ein Bild, hudson läuft wunderbar, nur es kann kein Zugriff auf git durch Zertifikate nicht vorhanden für den Benutzer tomcat7.

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"]

Ich bin mit der aktuellen version von Docker (Docker version 1.0.0, bauen 63fe64c/1.0.0), ist das ein Fehler im Andockfenster oder bin ich etwas fehlt in meinem Dockerfile?

Kommentar zu dem Problem - Öffnen
Sie sind sich bewusst USER Dockerfile Anleitung? Kommentarautor: icecrime
Nein, was schlagen Sie vor, dass ich es benutzen? Kommentarautor: Jan Vladimir Mostert
Wäre es möglich, erstellen Sie die Zertifikate über das Dockerfile mit Hilfe der USER-Anweisung? Kommentarautor: Jan Vladimir Mostert
Alles, was Sie RUN nach USER - Anweisung erfolgt unter der entsprechenden uid, also ich bin mir zwar nicht sicher, ob ich vollkommen verstehen Ihr problem, es sieht könnte es das sein, was du bist suchen für. Kommentarautor: icecrime
@icecrime nicht alles, leider. COPY - Dateien erstellt, die als uid 0, was bedeutet, dass Sie sind nicht beschreibbar, die durch die nicht-root-Benutzer, und die Ausführung von AUSFÜHREN chown ... auf diese Dateien wird nicht funktionieren, wenn der aktuelle Benutzer auch root. So landet man hin-und herschalten zwischen root und die anderen Benutzer in das Dockerfile. Kommentarautor: meowsqueak

InformationsquelleAutor der Frage Jan Vladimir Mostert | 2014-07-03

Schreibe einen Kommentar