2016-04-07 2 views

Antwort

4

Docker lädt das von Ihnen in Ihrer Dockerdatei angegebene Basisbild automatisch herunter. So könnte zum Beispiel ein wirklich einfaches "Hallo-Welt" -Bild sein;

Inhalt Ihres Dockerfile:

FROM alpine 
CMD echo "hello-world" 

ein Bild aus dem Dockerfile Gebäude, und es "Hallo" zu benennen:

docker build -t hello . 

Sie werden sehen, Docker Ziehen des alpine Bild, wenn es isn noch da und dann das Bild aufbauen;

Sending build context to Docker daemon 2.048 kB 
Step 1 : FROM alpine 
---> 70c557e50ed6 
Step 2 : CMD echo "hello world" 
---> Running in 94fcb9b89aaa 
---> 6462a272b1d6 
Removing intermediate container 94fcb9b89aaa 
Successfully built 6462a272b1d6 

Anschließend können Sie einen Container aus dem Bild laufen (das Bild wird nur laufen und fahren direkt nach seiner done)

$ docker run hello 
hello world 

können Sie verwenden jede Bild als „Basis“ (FROM) Bild für Ihre eigenen Bilder, so kann jedes Bild, das Sie auf Docker Hub finden, als Basis verwendet werden.

Im Allgemeinen wird jedoch empfohlen, die "offiziellen" Bilder als Grundlage für Ihre eigenen Bilder zu verwenden. Es gibt verschiedene "Distributionen" wie Ubuntu, Debian, Alpine (wenn Sie ein leichtes Bild haben wollen), CentOS usw.Das Basisbild muss nicht mit der Distribution Ihres Hosts übereinstimmen (Sie können also "ubuntu" für Ihre Bilder verwenden, obwohl Red Hat auf Ihrem Host läuft)

Sie können die offiziellen Bilder hier finden; https://hub.docker.com/explore/

Für eine erweiterte "Hallo Welt" Bild finden Sie in der Dokumentation hier; https://docs.docker.com/engine/userguide/containers/dockerizing/

Und bewährte Verfahren zum Schreiben von Dockerfiles; https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/

+0

Danke thaJeztah. Aber ich arbeite im Intranet, wo ich kein Basis-Image herunterladen kann. Also, ist es eine Möglichkeit, Bilddatei herunterzuladen und in meinen lokalen Repo von Docker einzufügen. –

+1

Wenn Sie in einer Umgebung arbeiten, in der keine Internetverbindung möglich ist, können Sie das Basisimage auf einem System mit * Internetverbindung * ziehen und das Basisimage über https://docs.docker.com exportieren/engine/reference/commandline/save/und lade sie mit 'docker load'. Dies gibt die volle Kontrolle darüber, welche Bilder verfügbar sind und verwendet werden dürfen. Alternativ können Sie ein privates Repository einrichten, mit dem sich Entwickler verbinden können, um Bilder zu ziehen. – thaJeztah

+0

Beachten Sie, dass ein lokales Repository als Spiegel für den Docker-Hub fungieren kann. Ich denke, es ist möglich, dass das funktioniert, wenn es keine Internetverbindung gibt. Dies würde Ihnen die Möglichkeit geben, offizielle Bilder zu verwenden, aber Entwickler nicht die Möglichkeit geben, zusätzliche Bilder zu ziehen. – thaJeztah

0

Erstellen Sie eine vollständige Bild tar

In der Regel werden Sie wollen mit einer Arbeitsmaschine starten, die die Verteilung läuft Sie möchten als verpacken Basis-Image, obwohl dies für einige Tools wie Debians Debootstrap nicht erforderlich ist, die Sie auch zum Erstellen von Ubuntu-Images verwenden können.

Es kann so einfach sein, da dies ein Ubuntu Basis-Image zu erstellen:

$ sudo debootstrap raring raring > /dev/null 
$ sudo tar -C raring -c . | docker import - raring 
a29c15f1bf7a 
$ docker run raring cat /etc/lsb-release 
DISTRIB_ID=Ubuntu 
DISTRIB_RELEASE=13.04 
DISTRIB_CODENAME=raring 
DISTRIB_DESCRIPTION="Ubuntu 13.04" 

Es gibt mehr Beispiel-Skripte für die Erstellung von Grundbildern im Docker GitHub Repo:

+0

Im Allgemeinen würde ich nicht empfehlen, zu versuchen, Ihre eigenen Basisbilder zu bauen; Die offiziellen Basisbilder sind gut gepflegt und werden auf Schwachstellen überprüft. Es ist leicht zu vermasseln Erstellen Sie Ihre eigenen Basis-Images, und erfordert Zeit und Mühe, um sie auf dem neuesten Stand zu halten – thaJeztah