2017-06-29 8 views
0

Ich versuche, ein Jenkins Docker Bild von offiziellen Jenkins Git Repo zu bauen: https://github.com/jenkinsci/docker.Gebäude Jenkins Docker Bild von offiziellen Dockerfile

Aber wenn ich versuche, den Behälter des Bildes mit docker run -it -dP jenkins zu laufen, es wird sofort beendet, und wenn ich die Docker Protokolle überprüfen, erhalte ich folgende Fehlermeldung:

: invalid option 

ich gelesen, dass der Fehler, weil sein könnte das pid von tini ist nicht 1. Ich schaute auf die Dokumente und sah, dass wenn wir das Folgende tun, sollte es das Problem lösen. Übergabe des Arguments -s an Tini (tini -s - ...) Einstellung der Umgebungsvariablen TINI_SUBREAPER (z. B. Export TINI_SUBREAPER =).

Aber es hat nichts gelöst.

Im Folgenden ist die exakte Kopie des Dockerfile mit docker build -t jenkins . gebaut:

FROM openjdk:8-jdk 

RUN apt-get update && apt-get install -y git curl && rm -rf /var/lib/apt/lists/* 

ARG user=jenkins 
ARG group=jenkins 
ARG uid=1000 
ARG gid=1000 
ARG http_port=8080 
ARG agent_port=50000 

ENV JENKINS_HOME /var/jenkins_home 
ENV JENKINS_SLAVE_AGENT_PORT ${agent_port} 
ENV TINI_SUBREAPER= 

# Jenkins is run with user `jenkins`, uid = 1000 
# If you bind mount a volume from the host or a data container, 
# ensure you use the same uid 
RUN groupadd -g ${gid} ${group} \ 
    && useradd -d "$JENKINS_HOME" -u ${uid} -g ${gid} -m -s /bin/bash ${user} 

# Jenkins home directory is a volume, so configuration and build history 
# can be persisted and survive image upgrades 
VOLUME /var/jenkins_home 

# `/usr/share/jenkins/ref/` contains all reference configuration we want 
# to set on a fresh new installation. Use it to bundle additional plugins 
# or config file with your custom jenkins Docker image. 
RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d 

ENV TINI_VERSION 0.14.0 
ENV TINI_SHA 6c41ec7d33e857d4779f14d9c74924cab0c7973485d2972419a3b7c7620ff5fd 

# Use tini as subreaper in Docker container to adopt zombie processes 
RUN curl -fsSL https://github.com/krallin/tini/releases/download/v${TINI_VERSION}/tini-static-amd64 -o /bin/tini && chmod +x /bin/tini \ 
    && echo "$TINI_SHA /bin/tini" | sha256sum -c - 

COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-agent-port.groovy 

# jenkins version being bundled in this docker image 
ARG JENKINS_VERSION 
ENV JENKINS_VERSION ${JENKINS_VERSION:-2.60.1} 

# jenkins.war checksum, download will be validated using it 
ARG JENKINS_SHA=34fde424dde0e050738f5ad1e316d54f741c237bd380bd663a07f96147bb1390 

# Can be used to customize where jenkins.war get downloaded from 
ARG JENKINS_URL=https://repo.jenkins-ci.org/public/org/jenkins-ci/main/jenkins-war/${JENKINS_VERSION}/jenkins-war-${JENKINS_VERSION}.war 

# could use ADD but this one does not check Last-Modified header neither does it allow to control checksum 
# see https://github.com/docker/docker/issues/8331 
RUN curl -fsSL ${JENKINS_URL} -k -o /usr/share/jenkins/jenkins.war \ 
    && echo "${JENKINS_SHA} /usr/share/jenkins/jenkins.war" | sha256sum -c - 

ENV JENKINS_UC https://updates.jenkins.io 
RUN chown -R ${user} "$JENKINS_HOME" /usr/share/jenkins/ref 


# for main web interface: 
EXPOSE ${http_port} 

# will be used by attached slave agents: 
EXPOSE ${agent_port} 

ENV COPY_REFERENCE_FILE_LOG $JENKINS_HOME/copy_reference_file.log 

USER ${user} 

COPY jenkins-support /usr/local/bin/jenkins-support 
COPY jenkins.sh /usr/local/bin/jenkins.sh 
ENTRYPOINT ["/bin/tini", "--", "/usr/local/bin/jenkins.sh"] 


# from a derived Dockerfile, can use `RUN plugins.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle 
COPY plugins.sh /usr/local/bin/plugins.sh 
COPY install-plugins.sh /usr/local/bin/install-plugins.sh 
+1

Wie haben Sie das Bild erstellt? Wie hast du es versucht? – Ryan

+0

verwendet den Standard-Docker Befehl zu bauen 'Docker Build -t Jenkins .' der Docker Run -IT-dP Jenkins – ShakyaS

+0

Das Beispiel funktioniert für mich. Können Sie die Docker-Version und den Host, auf dem Sie laufen, klären? –

Antwort

0

Das Problem mit der Docker Version war. Meine Docker-Version war alt. Nicht sicher, welcher Befehl nicht unterstützt wurde, aber der neue Docker hat die Docker-Datei erstellt.