Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Was bedeutet der Import und Export von Docker-Images?

Was bedeutet der Import und Export von Docker-Images?

WBOY
WBOYOriginal
2022-03-08 10:47:556242Durchsuche

In Docker besteht der Bildimport darin, den Befehl „Laden [Optionen]“ zu verwenden, um das aktuelle Bild in ein neues Bild zu kopieren. Beim Bildexport wird der Befehl „Bilder [Optionen] speichern“ verwendet, um alle Bilder zu speichern die Geschichte.

Was bedeutet der Import und Export von Docker-Images?

Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Docker-1.13.1-Version, Dell G3-Computer.

Was bedeutet Docker-Image-Import und -Export?

Mit der Entwicklung der Containertechnologie entscheiden sich viele Anwendungssysteme jetzt für die Verwendung von Docker-Containern für die Bereitstellung. Manchmal treten jedoch Probleme bei der Verwendung von Docker-Containern für die Bereitstellung auf, z sagte, dass unsere Anwendung auf andere Bilder von Drittanbietern angewiesen sein muss. Wenn der Server zu diesem Zeitpunkt keine Verbindung zum externen Netzwerk herstellen kann, kann er nicht bereitgestellt werden. Basierend auf dieser Situation unterstützt Docker offiziell den Import und Export von Docker-Images und -Containern. Wir können das Image auf einem Computer kompilieren, der eine Verbindung zum Internet herstellen kann, dann das Image oder den Container exportieren und schließlich das exportierte Image oder den exportierten Container hochladen Intranet-Server importieren, dann das Bild oder den Container importieren, und das war's.

Die Import- und Exportvorgänge von Bildern und Containern umfassen hauptsächlich die folgenden Befehle: Speichern, Laden, Exportieren und Importieren.

Während der Demonstration haben wir das Bild oder den Container lokal generiert, dann das Bild oder den Container exportiert und es schließlich auf den Alibaba Cloud-Server hochgeladen, um die Importfunktion zu demonstrieren.

Wir verwenden VS 2019, um ein ASP.NET Core MVC-Projekt zu erstellen, fügen die Dockerfile-Datei hinzu:

# 使用运行时镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim
# 设置工作目录
WORKDIR /app
# 把目录下的内容都复制到当前目录下
COPY . .
# 暴露80端口
EXPOSE 80
# 运行镜像入口命令和可执行文件名称
ENTRYPOINT ["dotnet", "DockerDemo.dll"]

und veröffentlichen dann das Projekt. Wenn wir uns die vorhandenen Docker-Images ansehen

, können wir sehen, dass es nur zwei .net-Core-Images gibt. Wir generieren das Bild:

 docker build -t dockerdemo .

Wie unten gezeigt:

Sehen Sie sich das generierte Bild an

Dann führen wir den Container basierend auf dem generierten Bild aus und überprüfen zunächst den vorhandenen Container:

Okay, sehen Sie dass derzeit keine Container vorhanden sind. Wir führen den Container aus:

Sie können sehen, dass der Container erfolgreich ausgeführt wurde.

2. Import und Export von Docker-Bildern

Beteiligte Befehle:

docker save [options]  images [images...]

Wir verwenden das obige Bild, um den Export des Bildes zu demonstrieren:

docker save -o dockerdemo.tar  dockerdemo

Wie in der Abbildung unten gezeigt:

Der Pfad der exportierten Datei wird beim Exportieren hier angegeben. Wenn der Pfad nicht angegeben ist, ist der Standardwert der aktuelle Ordner.

Oder Sie können den folgenden Befehl zum Exportieren verwenden:

docker save > dockerdemo.tar dockerdemo

wobei -o und > die Ausgabe in eine Datei angeben, dockerdemo.tar die exportierte Zieldatei und dockerdemo der Name des Quellbilds ist.

Wir prüfen, ob lokal eine exportierte Datei vorhanden ist:

Sie können sehen, dass sich die gerade exportierte Datei bereits im Verzeichnis befindet.

2. Import des Docker-Images

Wir laden zunächst die oben exportierte Bilddatei mit XFtp auf den Alibaba Cloud-Server hoch. Dann geben wir das Verzeichnis ein, in dem sich die Datei befindet. Wir prüfen, um welche Bilder es sich handelt auf dem Alibaba Cloud-Server:

Wie Sie auf dem Bild oben sehen können: Auf dem Alibaba Cloud-Server gibt es derzeit keinen Spiegel.

Der Importbefehl lautet „load“

docker load [options]

Als nächstes importieren wir das Bild, das wir gerade hochgeladen haben.

docker load -i dockerdemo.tar
Wie unten gezeigt:

Oder Sie können auch den folgenden Befehl verwenden

docker load < dockerdemo.tar
wobei -i (i bedeutet Import) und < die Eingabe aus einer Datei darstellt. Mit den beiden oben genannten Befehlen werden das Bild und die zugehörigen Metadaten, einschließlich Tag-Informationen, erfolgreich importiert.

Sehen Sie sich das Bild nach dem Import an:

Sie können sehen, dass wir das Bild haben, das wir gerade importiert haben. Nach dem Importieren des Bildes können Sie den Container basierend auf dem Bild ausführen und schließlich die Anwendung ausführen.

3. Import und Export von Docker-Containern

Als nächstes demonstrieren wir den Import und Export von Containern.

1. Der Export des Docker-Containers

beinhaltet den Befehl export.

docker export [options]  container
Wir exportieren den oben generierten Container:
docker export -o D:\containers\dockerdemocontainer.tar dockerdemo

Wie in der Abbildung unten gezeigt:

其中,-o表示输出的文件,这里指定了输出的路径,如果没有指定路径,则默认生成到当前文件夹。dockerdemocontainer.tar为目标文件,dockerdemo为源容器名。

我们查看目录下面是否生成了导出的容器:

2、docker容器的导入

我们首先把导出的容器使用XFTP上传到阿里云服务器。

涉及到的导入命令import。

docker import [options] file|URL|- [REPOSITORY[:TAG]]

如下图所示

我们导入刚才上传的容器

docker import dockerdemocontainer.tar dockerdemo:imp

dockerdemocontainer.tar表示要导入的容器,dockerdemo:imp表示导入后的镜像名称,imp表示给导入的镜像打tag。

如下图所示

然后我们查看镜像:

可以看到这时有我们刚才导入的镜像了,导入的镜像tag为imp。 

四、总结

下面我们来总结一下镜像和容器导入导出的区别:

  1. 镜像导入是一个复制的过程,容器导入是将当前容器变成一个新的镜像。
  2. docker save命令保存的是镜像(image),docker export命令保存的是容器(container)。
  3. export命令导出的tar文件略小于save命令导出的。
  4. 因为export导出的是容器,export导出的文件在import导入时,无法保留镜像所有的历史(即每一层layer信息),不能进行回滚操作。而save是根据镜像来的,所以导入时可以完整保留下每一层layer信息。如下图所示:dockerdemo:latest是save导出load导入的,dockerdemo:imp是export导出import导入的。
  5. docker load不能对导入的镜像重命名,而docker import导入可以为镜像指定新名称。例如,上面导入的时候指定dockerdeom:imp。

对于是使用镜像导入导出还是使用容器导入导出该如何选择呢?有下面两点建议:

  1. 若是只想备份image,使用save和load。
  2. 若是在启动容器后,容器内容有变化,需要备份,则使用export和import。 

推荐学习:《docker视频教程

Das obige ist der detaillierte Inhalt vonWas bedeutet der Import und Export von Docker-Images?. 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