Heim >Betrieb und Instandhaltung >Docker >Es gibt mehrere Möglichkeiten, ein Docker-Image zu erstellen

Es gibt mehrere Möglichkeiten, ein Docker-Image zu erstellen

青灯夜游
青灯夜游Original
2022-02-23 18:22:3639719Durchsuche

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.

Es gibt mehrere Möglichkeiten, ein Docker-Image zu erstellen

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.

Einführung in die Image-Konstruktion

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

Docker-Commit zum Erstellen eines Images

Beim Erstellen eines Images basierend auf einem vorhandenen Container wird hauptsächlich der Docker-Commit verwendet Befehl zum Erstellen eines neuen Images.
  • Es gibt drei Hauptschritte zum Erstellen von Dockercommit:
  • Führen Sie den Container aus.
  • Ändern Sie den Container.

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 found
Installiere 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

Verwenden Sie Commit, um es zu speichern. Das neue Image
[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:
  • Dies ist eine manuelle Methode zum Erstellen von Bildern, der Container ist fehleranfällig und ineffizient schwach in der Wiederholbarkeit
  • Noch wichtiger. Der Benutzer weiß nicht, wie das Bild erstellt wird. Befindet sich darin ein Schadprogramm?

Dockerfile zum Erstellen des Images.

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.

Das erste Dockerfike

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

 2. MAINTAINER

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.

Der Unterschied besteht darin, dass, wenn src eine Archivdatei (tar, zip, tgz, xz) ist, die Datei automatisch an dest übertragen wird.

 5.ENV

Setzen Sie Umgebungsvariablen, die von nachfolgenden Anweisungen verwendet werden können, z als:

ENV name ken RUN echo $name

 6.EXPOSE

Der Prozess im angegebenen Container hört auf einen bestimmten Port, und Docker kann den Port freigeben

 7.VOLUME

Deklarieren Sie eine Datei oder ein Verzeichnis als ein Volume

  10.CMD

容器启动时运行指定的命令

dockerfile中可以多个CMD指令,但是只要最后一个生效。CMD可以被docker run之后的参数替换

  11.ENTRYPOINT

设置容器启东市的命令

dockerfile中可以有多个ENTRYPOINT,但是只有最后一个生效。

CMD或者docker run之后的参数会被当做参数传递给ENTERYPOINT.

Dockerfile演示

下面演示一个比较全面的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
  •  可以发现当前工作目录为/ken,且自动创建
  • ken1是我们从docker context目录中复制过去的
  • test是使用touch创建的
  • wordpres压缩包已经被自动解压
  • $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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn