So stellen Sie mit Docker ein einfaches C/C++-Programm bereit

So stellen Sie mit Docker ein einfaches C/C++-Programm bereit

1. Erstellen Sie zunächst eine Datei hello-world.cpp

Der Programmcode lautet wie folgt:

#include <iostream>
Namespace std verwenden;

int haupt () {
	cout << "hallo-welt" << endl;
	cout << "mein erster Docker" << endl;
	gebe 0 zurück;
}

Beispielsweise habe ich in meinem Home-Pfad ein Verzeichnis DockerFile/hello-world erstellt und darin eine Quelldatei hello-world.cpp erstellt.

Bildbeschreibung hier einfügen

2. Schreiben Sie eine DockerFile-Datei

Diese Datei und die Quelldatei befinden sich, wie oben gezeigt, in einem Ordner mit dem Namen „hello-dockerfile“ .
Geben Sie zuerst den Dateiinhalt an und erläutern Sie ihn dann nacheinander:

VON codenvy/cpp_gcc 

RUN mkdir /home/user/myapp

ADD hello-world.cpp /home/Benutzer/meineApp

ARBEITSVERZEICHNIS /home/Benutzer/meineApp

RUN g++ hallo-welt.cpp -o hallo

CMD ["./hallo"]

Die Befehle für Dockerfile finden Sie in einem anderen Blog von mir: https://www.jb51.net/article/197996.htm

1. VON codenvy/cpp_gcc

Auf FROM folgt das Basisimage, das vom Zielimage verwendet wird. Es kann nur ein Basisimage geben. Sie können den Docker-Suchbefehl verwenden, um das gewünschte Basisimage auf dem Docker-Hub zu finden. Da wir eine C++-Datei kompilieren möchten, können wir ein Image mit g++ oder gcc als Basisimage verwenden. Wir können nach einem Image mit g++ suchen, wie unten gezeigt:

Bildbeschreibung hier einfügen

Ich verwende beispielsweise die zweite Methode und ziehe das Image dann über den Docker-Pull -Befehl auf den lokalen Computer, wie in der folgenden Abbildung dargestellt.

Bildbeschreibung hier einfügen

Geben Sie den Befehl „Docker Images“ ein, um alle lokalen Images anzuzeigen, wie in der folgenden Abbildung gezeigt:

Bildbeschreibung hier einfügen

Ich habe hier beispielsweise zwei Bilder: eines ist das Codenvy/cpp_gcc , das ich gerade heruntergeladen habe, und das andere ist das Ubuntu -Bild.

Manche Leute fragen sich vielleicht, warum nicht einfach das Ubuntu-Image verwendet wird? Unserer Meinung nach wird Ubuntu mit den Compilern g++ und gcc geliefert und dieses Image ist relativ klein. Lassen Sie es mich hier erklären: Da das Ubuntu-Image unter Docker nur Dinge behält, die mit dem Ubuntu-Kernel zusammenhängen, wurde alles außerhalb des Kernels so weit wie möglich gelöscht. Dies erklärt auch, warum das Ubuntu-Image, das wir normalerweise installieren, fast zwei GB groß ist, während das Ubuntu-Image von Docker nur mehr als siebzig MB groß ist. In diesem Ubuntu-Image gibt es keine gcc- und g++-Befehle, nicht einmal sudo-Befehle, daher müssen Sie sie manuell herunterladen und konfigurieren.

Beispielsweise verwenden wir das Ubuntu-Image, um einen Container zu generieren:

Bildbeschreibung hier einfügen

Überprüfen Sie dann die Version von g++:

Bildbeschreibung hier einfügen

Habe festgestellt, dass g++ nicht installiert war

Bildbeschreibung hier einfügen

Das gilt auch für den sudo-Befehl.
Wir müssen also ein Image mit G++ herunterladen, oder wir können es manuell im Ubuntu-Image installieren, was aber etwas mühsam ist.

2. Führen Sie mkdir /home/user/myapp aus

Beim Erstellen eines Containers ist der RUN -Befehl erforderlich, gefolgt von unseren allgemeinen Linux-Befehlen.

Dieser Befehl erstellt einen neuen Ordner „myapp“ im Pfad „/home/user“.

3. ADD hello-world.cpp /home/user/myapp

Der Befehl ADD kopiert Dateien vom Hostcomputer in das Image. Sie können auch den Befehl COPY verwenden, aber ADD ist leistungsfähiger als COPY . ADD verfügt über eine Dekomprimierungsfunktion.

Dieser Befehl kopiert die im ersten Schritt erstellte Quelldatei „hello-world.cpp“ in den Pfad „/home/user/myapp“ im Image.

4. ARBEITSVERZEICHNIS /home/Benutzer/meineApp

Der Befehl WORKDIR gibt beim Erstellen des Containers das Standardarbeitsverzeichnis des Containers an.

Dieser Befehl verwendet den Pfad home/user/myapp im Image als Standardarbeitspfad.

5. Führen Sie den Befehl g++ hello-world.cpp -o hello aus.

Dieser Befehl verwendet g++, um die Quelldatei hello-world.cpp zu kompilieren und eine ausführbare Datei hello zu erstellen.

6. CMD ["./hallo"]

CMD ist der erste Befehl, der ausgeführt wird, nachdem der angegebene Container erstellt wurde.

Dieser Befehl führt die ausführbare Datei hello aus, die im vorherigen Schritt erstellt wurde

3. Erstellen Sie ein Bild

Verwenden Sie den Befehl:

Docker-Build -f ./hello-dockerfile -t my_hello_docker:v1.0.

./hello-dockerfile ist der Speicherort unseres Dockerfiles
my_hello_docker ist der Name des neu erstellten Images
v1.0 ist das Tag des Bildes, dies ist beispielsweise die erste Version

Der Vorgang der Imageerstellung ist in der folgenden Abbildung dargestellt:

Bildbeschreibung hier einfügen

Nachdem der Build abgeschlossen ist, überprüfen wir, ob der Build erfolgreich war, und zeigen alle aktuellen lokalen Images über den Befehl „Docker Images“ an:

Bildbeschreibung hier einfügen

Hier sehen wir ein weiteres Image: my_hello_docker . Dies ist das Image, das wir gerade erstellt haben. Dies zeigt an, dass das Image erfolgreich erstellt wurde.

4. Führen Sie einen Container durch das Image

Instanziieren Sie einen Container mit dem folgenden Befehl

Docker führt my_hallo_docker aus:v1.0

Dann erhalten Sie die folgende Ausgabe:

Bildbeschreibung hier einfügen

Die Ausgabe stimmt mit der von uns geschriebenen C++-Datei überein und zeigt an, dass Docker erfolgreich zum Bereitstellen eines einfachen C/C++-Programms und zum Erreichen des Ziels verwendet wurde.

Dies ist das Ende dieses Artikels über die Verwendung von Docker zum Bereitstellen eines einfachen C/C++-Programms. Weitere Informationen zum Bereitstellen von C/C++-Programmen mit Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Verwendung von Docker zum Bereitstellen eines Webprojekts und zum Verpacken in eine Bilddatei
  • Detaillierte Schritte zum Bereitstellen von Tomcat- und Java-Anwendungen in Docker
  • Tutorial zum Bereitstellen von Python-Anwendungen auf Docker
  • Methoden zum Bereitstellen von MySQL-Diensten in Docker und die dabei auftretenden Fallstricke
  • Tutorial zum Bereitstellen des Flask-Frameworks von Python auf Docker
  • Detaillierte Erläuterung der automatischen Docker-Bereitstellung von Tomcat
  • Detaillierte Erklärung zum Einrichten von Go und Bereitstellen von Anwendungen in Docker
  • Detaillierte Erläuterung der Bereitstellung und des Betriebs von CentOS7 Docker Nginx
  • Tutorial zum Bereitstellen von Docker auf mehreren Hosts mit OpenVSwitch

<<:  MySQL-Export ganzer oder einzelner Tabellendaten

>>:  Vue implementiert eine kleine Formularvalidierungsfunktion

Artikel empfehlen

Starten Sie alle gestoppten Docker-Container mit einem Befehl neu

Starten Sie alle gestoppten Docker-Container mit ...

HTML Gewichtsverlust Optimieren Sie HTML-Tags zum Erstellen von Webseiten

HTML 4 HTML (nicht XHTML), MIME-Typ ist text/html...

Vue implementiert Login-Sprung

In diesem Artikelbeispiel wird der spezifische Co...

Code zum Aktivieren von IE8 im IE7-Kompatibilitätsmodus

Das beliebteste Tag ist IE8 Browser-Anbieter geben...

Detaillierte Erklärung zum Schreiben mehrerer Bedingungen von CSS: nicht

Der Pseudoklassenselektor :not kann Elemente filt...

So legen Sie in Linux eine feste IP fest (getestet und effektiv)

Öffnen Sie zunächst die virtuelle Maschine Öffnen...

Detaillierte Erklärung zur Verwendung von Element-Plus in Vue3

Inhaltsverzeichnis 1. Installation 2. Importieren...

Lösung für den Fehler bei der Verbindung mit MySQL in Docker

Szenario: Nach der Installation der neuesten Vers...

Dieser Artikel zeigt Ihnen, wie Sie mit CSS-Rahmen spielen

Rahmenstil Die Eigenschaft „Border-Style“ gibt an...

Vue realisiert die Palastgitterrotationslotterie

Vue implementiert die Palastgitterrotationslotter...