2017-11-24 2 views
0

Mein Dockerfile sieht aus wieWie Docker Layer zu teilen?

RUN echo "Downloading huge file" && \ 
    wget http://server/huge.tar.gz && \ 
    echo "Extracting huge file" && \ 
    tar xzf huge.tar.gz && \ 
    huge/install /opt/myinstall && \ 
    rm -rf huge* 

Eigentlich bin ich

  1. Herunterladen DRITTEN Installationspaket
  2. Auspacken
  3. Lauf installieren
  4. Entfernen Installationsdateien

Docker-Build gelingt und ich kann meinen neuen Container verwenden.

Problem beginnt, wenn ich zur Amazon Container Registrierung dränge.

Push wird abgelehnt, weil die letzte Schicht sehr groß ist (ca. 20G).

20G ist eine echte Größe der Installation, also kann ich ein wenig tun, um es zu verringern.

Meine Frage ist, wie kann ich eine Schicht in einige kleinere Schichten aufteilen, um Amazon-Schichtgrößenbegrenzung unterzubringen?

Antwort

1

Für jede dockerfile-Anweisung wird eine neue Ebene erstellt. Die Lösung besteht also darin, den Befehl RUN in mehrere RUN Befehle aufzuteilen. Ich bin mir jedoch nicht sicher, ob diese Lösung in Ihrem Fall funktioniert, wenn der Teer sehr groß ist, da eine der Schichten den Teer enthält. Trotzdem sollten Sie diesen Ansatz versuchen.

RUN wget http://server/huge.tar.gz 
RUN tar xzf huge.tar.gz 
RUN huge/install /opt/myinstall && \ 
RUN rm -rf huge* 

Eine andere Alternative ist docker multistage build zu verwenden. Die Idee ist, den Teer in einem separaten Behälter zu installieren und kopieren Sie einfach das Installationsverzeichnis Sie Container:

FROM ... as installer 
RUN echo "Downloading huge file" && \ 
    wget http://server/huge.tar.gz && \ 
    echo "Extracting huge file" && \ 
    tar xzf huge.tar.gz && \ 
    huge/install /opt/myinstall && \ 
    rm -rf huge* 

FROM ... 
COPY --from=installer /opt/myinstall /opt/myinstall 
... 

diese Weise können Sie nur eine Schicht in Ihrem Bild haben wird die Installation, die nur Kopien.

+1

Tolle Idee mit mehrstufigem Aufbau! Leider ist das Installationsverzeichnis> 10G, also muss ich/opt/myinstall irgendwie trennen ... – ilia

Verwandte Themen