2017-09-14 3 views
0

Ich habe ein Dockerfile, die mit Beginn des Einsatzes:Docker CMD, wenn das Basisbild eine CMD hat?

FROM puppet/puppetserver 

Als ich die source container sehe es aus another gebaut:

FROM puppet/puppetserver-standalone:5.0.0 

Der zweite enthält einen CMD Befehl:

ENTRYPOINT ["dumb-init", "/docker-entrypoint.sh"] 
CMD ["foreground" ] 

In meinem eigenen Behälter schließe ich mit:

COPY start.sh/
CMD /start.sh 

Die CMD laufen aber mit unerwarteten Ergebnissen:

puppetserver: '/ bin/sh' ist kein puppetserver Befehl. Siehe 'puppetserver --help'.

Ich weiß, dass ich bash availible, weil ich RUN commands.sh vor CMD im gleichen Dockerfile bin mit.

Wie werden CMD Befehle beim Erben von Basisbildern gestapelt?

Wird mein CMD nicht als normaler Bash-Befehl ausgeführt und stattdessen in Verbindung mit dem CMD des Basisbildes ausgeführt?

Antwort

2

Sie müssen die ENTRYPOINT aus dem übergeordneten Bild zurücksetzen

COPY start.sh/
ENTRYPOINT [] 
CMD /start.sh 
+0

Danke jetzt versuchen, bedeutet dies, dass die '/ docker-entrepoint.sh' aus dem übergeordneten Container nicht ausgeführt wird? (Kann wahrscheinlich nur in meinem 'start.sh' verweisen, wenn ja) –

+0

Ja, wenn Sie es ausführen möchten, werden Sie es in Ihrem' start.sh' ausführen –