2017-08-23 7 views
0

ich ein Docker Bild und jetzt gebaut haben, wenn sie versuchen, den Behälter ich die folgende Fehlermeldung auszuführen:Docker Bild andernfalls laufen

$ docker run myimage 
[dumb-init] /docker-entrypoint.sh: No such file or directory 

Irgendwelche Ideen?

Auch die Datei docker-entrypoint.sh existiert auf dem Bild:

$ docker run --entrypoint=/bin/ls myimage -l /docker-entrypoint.sh 
-rwxr-xr-x 1 root root 724 Aug 23 09:50 /docker-entrypoint.sh 


FROM ubuntu:16.04 
MAINTAINER Gareth Rushgrove "[email protected]" 

ARG ssh_prv_key 
ARG ssh_pub_key 

ENV PUPPET_SERVER_VERSION="2.7.2" DUMB_INIT_VERSION="1.1.0" UBUNTU_CODENAME="xenial" PUPPETSERVER_JAVA_ARGS="-Xms256m -Xmx256m" PATH=/opt/puppetlabs/server/bin:/opt/puppetlabs/puppet/bin:/opt/puppetlabs/bin:$PATH 

LABEL org.label-schema.vendor="Puppet" \ 
     org.label-schema.url="https://github.com/puppetlabs/puppet-in-docker" \ 
     org.label-schema.name="Puppet Server (No PuppetDB)" \ 
     org.label-schema.license="Apache-2.0" \ 
     org.label-schema.version=$PUPPET_SERVER_VERSION \ 
     org.label-schema.vcs-url="https://github.com/puppetlabs/puppet-in-docker" \ 
     org.label-schema.vcs-ref="a2b1fbbc73177ddc3def23d167f9beb9c3ef9f6c" \ 
     org.label-schema.build-date="2017-02-21T17:25:14Z" \ 
     org.label-schema.schema-version="1.0" \ 
     com.puppet.dockerfile="/Dockerfile" 

RUN apt-get update && \ 
    apt-get install -y wget=1.17.1-1ubuntu1 git && \ 
    wget https://apt.puppetlabs.com/puppetlabs-release-pc1-"$UBUNTU_CODENAME".deb && \ 
    wget https://github.com/Yelp/dumb-init/releases/download/v"$DUMB_INIT_VERSION"/dumb-init_"$DUMB_INIT_VERSION"_amd64.deb && \ 
    dpkg -i puppetlabs-release-pc1-"$UBUNTU_CODENAME".deb && \ 
    dpkg -i dumb-init_"$DUMB_INIT_VERSION"_amd64.deb && \ 
    rm puppetlabs-release-pc1-"$UBUNTU_CODENAME".deb dumb-init_"$DUMB_INIT_VERSION"_amd64.deb && \ 
    apt-get update && \ 
    apt-get install --no-install-recommends -y puppetserver="$PUPPET_SERVER_VERSION"-1puppetlabs1 && \ 
    apt-get clean && \ 
    rm -rf /var/lib/apt/lists/* && \ 
    gem install --no-rdoc --no-ri r10k 

COPY puppetserver /etc/default/puppetserver 
COPY logback.xml /etc/puppetlabs/puppetserver/ 
COPY request-logging.xml /etc/puppetlabs/puppetserver/ 

RUN puppet config set autosign true --section master 

VOLUME /etc/puppetlabs/code/ \ 
     /etc/puppetlabs/puppet/ssl/ \ 
     /opt/puppetlabs/server/data/puppetserver/ 

COPY docker-entrypoint.sh/


# Add the keys and set permissions 
RUN mkdir -p /root/.ssh && \ 
    chmod 0700 /root/.ssh && \ 
    echo "$ssh_prv_key" > /root/.ssh/id_rsa && \ 
    echo "$ssh_pub_key" > /root/.ssh/id_rsa.pub && \ 
    chmod 600 /root/.ssh/id_rsa && \ 
    chmod 600 /root/.ssh/id_rsa.pub && \ 
    echo "Host github.com\n\tStrictHostKeyChecking no\n" >> /root/.ssh/config 


EXPOSE 8140 

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

COPY Dockerfile/
+0

Poste dein Dockerfile –

+0

Entschuldigung, ich hätte wahrscheinlich auch Docker CE auf Windows (Linux-Containern) erwähnt; die dockerfile wurde erfolgreich auf mac getestet – NA1985

+0

Wozu dient diese dumb-init? –

Antwort

0

Datei docker-entrypoint.sh ist nicht Teil des Bildes, sondern es in Dockerfile definieren.

Diese Datei wird in das Bild kopiert, wenn Sie ein Bild mit "Dockerfile" erstellen.

Sie können Beispiel von mysql in Github sehen.

https://github.com/docker-library/mysql/tree/master/5.6

können Sie folgenden Befehl verwenden Dockerfile zu verwenden für integrierte Bild

docker build -t mysql -f Dockerfile . 

Und Sie werden Bild wiht diesem commend und keine Notwendigkeit, laufen als Einstiegspunkt in Fahrbefehl zu definieren

docker run --name mysql 

innerhalb von Dockerfile

ENV STARTUP_SCRIPT=/usr/local/bin/start-up.sh 

COPY nginx/start-up.sh $STARTUP_SCRIPT 

ENTRYPOINT $STARTUP_SCRIPT 
+0

Ich habe folgende Änderung an dockerfile vorgenommen: #ENTRYPOINT ["dumb-init", "/docker-entrypoint.sh"] ENTRYPOINT ["docker-entrypoint.sh"] Jetzt bekomme ich: container_linux.go: 262: Startcontainer-Prozess verursacht "exec: \" docker-entrypoint.sh \ ": ausführbare Datei nicht in $ PATH gefunden" – NA1985

+0

Sie müssen also sh-Skript machen und alle setzen Eingabe commend in diesem Skript. ENV STARTUP_SCRIPT =/usr/local/bin/start-up.sh COPY nginx/start-up.sh $ STARTUP_SCRIPT ENTRYPOINT $ STARTUP_SCRIPT – dom

+0

ok ich stumm-init Anruf entfernt haben insgesamt – NA1985