Heim > Artikel > Betrieb und Instandhaltung > Es gibt mehrere Möglichkeiten, ein Docker-Image zu erstellen
Es gibt zwei Möglichkeiten, ein Docker-Image zu erstellen: 1. Verwenden Sie den Befehl „Docker Commit“, um das Image basierend auf dem vorhandenen Container manuell zu erstellen. 2. Verwenden Sie Dockerfile, um das Image automatisch zu erstellen indem Sie die Anweisungen in der Dockerfile-Builddatei lesen.
Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Docker-1.13.1-Version, Dell G3-Computer.
Manchmal kann das aus dem Docker-Image-Warehouse heruntergeladene Image die Anforderungen nicht erfüllen.
Unter welchen Umständen müssen wir das Image selbst erstellen?
(1) Wenn wir kein vorhandenes Image finden können, beispielsweise eine von uns selbst entwickelte Anwendung
(2) Wir müssen dem Image bestimmte Funktionen hinzufügen
Es gibt zwei Möglichkeiten für Docker, ein Image zu erstellen: docker commit-Befehl und Dockerfile
Build-Dateidocker commit
命令与Dockerfile
构建文件
基于已有容器构建镜像主要是通过docker commit
Docker-Commit
verwendet Befehl zum Erstellen eines neuen Images. Speichern Sie den Container als neues Image.
Installieren Sie beispielsweise den VIM-Editor im Centos-Image und speichern Sie ihn als Neues Image (1) Container ausführen[root@ken1 docker]# docker run -it centos Unable to find image 'centos:latest' locally latest: Pulling from library/centos a02a4930cb5d: Pull complete Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426 Status: Downloaded newer image for centos:latest(2) Den VIM-Editor installieren Der VIM-Editor bestätigt, dass er nicht installiert ist
[root@69f501e858a6 /]# vim bash: vim: command not foundInstalliere ihn
[root@69f501e858a6 /]# yum install vim -y(3) Als neues Image speichern Zuerst Überprüfen Sie das aktuell laufende Image
[root@ken1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 69f501e858a6 centos "/bin/bash" 2 minutes ago Up 2 minutes quizzical_torvalds
[root@ken1 ~]# docker commit 69f501e858a6 centos-vim sha256:42083b89a179368bc29a8f40d14f8824990183c8e4b28fd84411d440c26342e5
69f501e858a6 ist die ID des laufenden Containers. Sie können auch den Namen unten verwenden.
centos-vim ist der Name des neuen Images.Überprüfen Sie, ob ein Centos-VIM-Image vorhanden ist.
Starten Sie das neue Image neu. Überprüfen Sie, ob Sie den Vim-Editor verwenden können.[root@ken1 ~]# docker run -it centos-vim [root@61d090898bad /]# vim [root@61d090898bad /]# vim test. Das Obige zeigt, wie Um Commit zum Erstellen eines neuen Bildes zu verwenden, empfiehlt Docker aus folgenden Gründen nicht, diese Methode zum Erstellen eines Bildes zu verwenden:
Dockerfile ist eine Datei, die aus einer Reihe von Anweisungen besteht. Das Docker-Programm generiert schließlich ein Image, indem es die Anweisungen liest Docker-Datei.
Schritt 1: Neues Verzeichnis erstellen
[root@ken1 ~]# mkdir /test
Schritt 2: Dockerfile schreiben
Der Name heißt Dockerfile und das erste D muss groß geschrieben werden
[root@ken1 ~]# cat Dockerfile FROM centos RUN yum install vim -y
FROM Centos bedeutet die Verwendung von Centos als Basisbild
RUN bedeutet, den VIM-Editor auf Centos zu installieren
Schritt 3: Erstellen Sie das Image
[root@ken1 ~]# docker build -t centos-vim2 .
Geben Sie den Tag-Namen (Tag) des neuen Images nach -t an
Der letzte Punkt zeigt an, dass der Docker-Kontext das aktuelle Verzeichnis ist . Docker sucht standardmäßig im Build-Kontext nach der Docker-Datei. Schritt 4: Zeigen Sie den Build-Verlauf des Bildes an das Bild, das den Ausführungsprozess der Docker-Datei darstellt.
Dcokerfile allgemeine Anweisungen
1.FROMGeben Sie das Basisbild an
Legen Sie den Autor des Bildes fest. Es kann ein beliebiges Zeichen sein kopiert werden Die Dateien oder Verzeichnisse im dynamischen Build-Kontext können sich nur im selben Verzeichnis wie die Docker-Datei befinden 4.ADD
ähnelt COPY und kopiert Dateien aus dem Build-Kontext in das Image.
Setzen Sie Umgebungsvariablen, die von nachfolgenden Anweisungen verwendet werden können, z als:
6.EXPOSE
7.VOLUME
Deklarieren Sie eine Datei oder ein Verzeichnis als ein Volume
容器启动时运行指定的命令
dockerfile中可以多个CMD指令,但是只要最后一个生效。CMD可以被docker run之后的参数替换
设置容器启东市的命令
dockerfile中可以有多个ENTRYPOINT,但是只有最后一个生效。
CMD或者docker run之后的参数会被当做参数传递给ENTERYPOINT.
下面演示一个比较全面的dockerfile
[root@ken1 test]# cat Dockerfile #my Dockerfile FROM busybox MAINTAINER ken WORKDIR /ken RUN touch test COPY ["ken1","."] ADD ["wordpress.tar.gz","."] ENV name "ken"
注意:Dockerfile支持以#开头的注释
构建镜像
[root@ken1 test]# docker build -t myimage . Sending build context to Docker daemon 4.281MB Step 1/7 : FROM busybox ---> 3a093384ac30 Step 2/7 : MAINTAINER ken ---> Running in 2a73a83507ce Removing intermediate container 2a73a83507ce ---> 8c3df9b3d823 Step 3/7 : WORKDIR /ken ---> Running in 31c6f9fe2195 Removing intermediate container 31c6f9fe2195 ---> a458cf986072 Step 4/7 : RUN touch test ---> Running in e1b08ebd363c Removing intermediate container e1b08ebd363c ---> 41601920009a Step 5/7 : COPY ["ken1","."] ---> 2ebfa0933fca Step 6/7 : ADD ["wordpress.tar.gz","."] ---> d0ad29d3aa34 Step 7/7 : ENV name "ken" ---> Running in fceae6e20e63 Removing intermediate container fceae6e20e63 ---> 7efe0600e48f Successfully built 7efe0600e48f Successfully tagged myimage:latest
查看镜像
运行该镜像
[root@ken1 test]# docker run -it myimage /ken # ls ken1 test wordpress /ken # echo $name ken
推荐学习:《docker视频教程》
Das obige ist der detaillierte Inhalt vonEs gibt mehrere Möglichkeiten, ein Docker-Image zu erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!