ホームページ  >  記事  >  運用・保守  >  Docker イメージのインポートとエクスポートとは何を意味しますか?

Docker イメージのインポートとエクスポートとは何を意味しますか?

WBOY
WBOYオリジナル
2022-03-08 10:47:556180ブラウズ

Docker では、イメージのインポートでは、「load [options]」コマンドを使用して現在のイメージを新しいイメージにコピーします。イメージのエクスポートでは、「save [options] Images」コマンドを使用して、すべてのミラーリングを含む履歴を保存します。情報。

Docker イメージのインポートとエクスポートとは何を意味しますか?

このチュートリアルの動作環境: linux7.3 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。

Docker イメージのインポートとエクスポートの意味

コンテナ テクノロジの発展により、多くのアプリケーション システムはデプロイメントに Docker コンテナを使用することを選択するようになりましたが、場合によっては Docker コンテナが使用されることになります。デプロイ時に問題が発生します。たとえば、アプリケーションは他のサードパーティのイメージに依存する必要があります。この時点でサーバーが内部ネットワークから外部ネットワークに接続できない場合、アプリケーションはデプロイされません。このような状況を踏まえ、Docker は Docker イメージとコンテナーのインポートとエクスポートを正式にサポートし、インターネットにアクセスできるマシン上でイメージをコンパイルし、イメージまたはコンテナーをエクスポートし、最後にエクスポートされたイメージまたはコンテナーをイントラネット サーバーにアップロードすることができます。そして、イメージまたはコンテナをインポートするだけです。

イメージとコンテナのインポ​​ートおよびエクスポート操作には、主に、保存、ロード、エクスポート、インポートのコマンドが含まれます。

デモでは、イメージまたはコンテナをローカルで生成し、次にイメージまたはコンテナをエクスポートし、最後に Alibaba Cloud サーバーにアップロードしてインポート機能をデモンストレーションしました。

VS 2019 を使用して ASP.NET Core MVC プロジェクトを作成し、Dockerfile ファイル:

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

を追加して、プロジェクトを公開します。既存の Docker イメージ

を確認すると、.net core イメージが 2 つだけであることがわかります。画像を生成します:

 docker build -t dockerdemo .

以下に示すように:

生成された画像を表示

次に、生成されたイメージに基づいてコンテナーを実行します。まず、既存のコンテナーを確認します:

現時点ではコンテナーがないことがわかります。コンテナーを実行します。

#コンテナーが正常に実行されたことがわかります。

2. docker イメージのインポートとエクスポート

1. docker イメージのエクスポート

関連するコマンド:

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

上記のイメージを使用して、Docker イメージをエクスポートします。デモ画像:

docker save -o dockerdemo.tar  dockerdemo

下の図に示すように:

エクスポート時にエクスポートされるファイルへのパスが指定されます。パスが指定されていない場合は、 、デフォルトは現在のフォルダーです。

または、次のコマンドを使用してエクスポートできます:

docker save > dockerdemo.tar dockerdemo

-o と > はファイルへの出力を示し、dockerdemo.tar はエクスポートされたターゲット ファイル、dockerdemo はソース イメージです名前。

エクスポートされたファイルがローカルに存在するかどうかを確認します。

エクスポートされたばかりのファイルが既にディレクトリの下に存在することがわかります。

2. docker イメージのインポート

まず、XFtp を使用して、上でエクスポートしたイメージ ファイルを Alibaba Cloud サーバーにアップロードします

そして次に、「ファイルが置かれているディレクトリ」を入力します。

Alibaba Cloud サーバー上にどのような画像があるかを確認してみましょう:

上の図からわかるように、現在 Alibaba Cloud サーバーには画像がありません。

関連するインポート コマンドload

docker load [options]

次に、アップロードした画像をインポートします。

docker load -i dockerdemo.tar

以下に示すように:

#または、次のコマンド

docker load < dockerdemo.tar

を使用することもできます。ここで -i (i はインポートを意味します) < はファイルからの入力を意味します。上記の 2 つのコマンドは、画像と、タグ情報を含む関連メタデータを正常にインポートします。

インポート後の画像を表示します:

インポートしたばかりの画像があることがわかります。イメージをインポートした後、イメージに基づいてコンテナーを実行し、最後にアプリケーションを実行できます。

3. Docker コンテナのインポ​​ートとエクスポート

次に、コンテナのインポ​​ートとエクスポートを示します。

1. Docker コンテナのエクスポート

コマンドのエクスポートが含まれます。

docker export [options]  container

上で生成されたコンテナをエクスポートします:

docker export -o D:\containers\dockerdemocontainer.tar dockerdemo

以下に示すように:

其中,-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视频教程

以上がDocker イメージのインポートとエクスポートとは何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。