Dockerイメージの作成、保存、読み込み方法

Dockerイメージの作成、保存、読み込み方法

イメージを作成する方法は 3 つあります。既存のイメージに基づいてコンテナを作成する、ローカル テンプレートからインポートする、Dockerfile に基づいて作成する、です。このブログ投稿では、最初の 2 つについて説明します。

既存のイメージに基づいてコンテナを作成する

方法は docker commit コマンドを使用するもので、コマンドの形式は次のとおりです。

 docker commit [オプション] コンテナ [リポジトリ[:タグ]]

主なパラメータ オプションは次のとおりです。

  • -a, --author="" 著者情報
  • -m, --message="" コミットメッセージ
  • -p, --pause=true 送信するとコンテナが一時停止します

たとえば、まず bash を実行する ubuntu コンテナを作成します。

docker run –it ubuntu /bin/bash

root@d8990fec2141:/# タッチテスト

root@d8990fec2141:/# 終了

次に、作成したコンテナに基づいて新しいイメージを送信します。送信にはコンテナ ID が必要です。

 docker commit –m “test” –a “zmc” d8990fec2141 テストイメージ

成功した場合、新しいイメージの長い ID 番号が返され、既存のイメージをローカルで確認できます。

Docker イメージ

リポジトリ タグ イメージ ID 作成 仮想サイズ

testimage 最新 baea98d5a437 約 1 分前 188.3 MB

…

3 行目は、作成したばかりの画像です。

PS: このコンテナを使用して作成されたイメージ ID は、このコンテナのイメージ ID と異なるため、同じイメージではないことがわかります。

ローカルテンプレートに基づいてインポート

OpenVZ が提供するテンプレートなどを使用して、オペレーティング システムのテンプレート ファイルからイメージをインポートすることもできます。OPENVZ のダウンロード テンプレートは、http://openvz.org/Download/template/precreated にあります。

Ubuntu 14.04 のテンプレートを使用してみました:

http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz をダウンロードしてください

ダウンロード後、インポートできます:

sudo cat ubuntu–14.04–x86_64–minimal.tar.gz | docker import – ubuntu:14.04

コマンドは 2 つだけですが、非常に明白なので説明しません。成功した場合、テンプレートに基づいて作成された画像の長いIDを返します。

sudo cat ubuntu–14.04–x86_64–minimal.tar.gz | docker import – ubuntu:14.04

ab80404d13d580965b9919b640169ccb585ea7884e6aa9de1ec043075c65fe35

次に、ローカルイメージを表示します。

Docker イメージ

リポジトリ タグ イメージ ID 作成 仮想サイズ

ubuntu 14.04 ab80404d13d5 56 秒前 215.4 MB

testimage 最新 baea98d5a437 29 分前 188.3 MB

……。

実際、テンプレートは 75M しかありませんが、作成された画像は小さくないことがわかります。

画像の保存と読み込み

docker save コマンドと docker コマンドを使用して、イメージを保存および読み込むことができます。

画像を保存する

イメージをローカル ファイルに保存する場合は、docker save コマンドを使用できます。たとえば、作成したローカルの testimage:lastest ファイルをイメージ ファイル testimage.tar として保存します。

Docker イメージ

リポジトリ タグ イメージ ID 作成 仮想サイズ

testimage 最新 baea98d5a437 25 分前 188.3 MB

ubuntu 最新 fa81ed084842 3日前 188.3 MB

……。

docker save –o /data/testimage.tar testimage:latest

上記6行目はコードを保存するものです。このとき、/dataの下にtestimage.tarファイルがあります。このとき、ローカルイメージをrmiしてロードしてみます。

画像を読み込んでいます

画像削除後のステータス:

ubuntu@VM–223–238–ubuntu:/data$ docker rmi baea98d5a437

タグなし: testimage:latest

削除済み: baea98d5a4371a6abf9efc8c53a54a6fc5befd167bf91ce9fd4a28a6d1b7dc5b

ubuntu@VM–223–238–ubuntu:/data$ docker イメージ

リポジトリ タグ イメージ ID 作成 仮想サイズ

ubuntu 14.04 ab80404d13d5 5分前 215.4 MB

次に、画像を読み込みます。

docker load --input testimage.tar

Docker イメージ

リポジトリ タグ イメージ ID 作成 仮想サイズ

ubuntu 14.04 ab80404d13d5 6分前 215.4 MB

testimage 最新 baea98d5a437 35 分前 188.3 MB

最初の行は画像を読み込むもので、次のように簡略化できます。

docker load --input testimage.tar

Docker イメージ

リポジトリ タグ イメージ ID 作成 仮想サイズ

ubuntu 14.04 ab80404d13d5 6分前 215.4 MB

testimage 最新 baea98d5a437 35 分前 188.3 MB

読み込み操作により、画像と関連するメタデータ情報 (タグなどを含む) がインポートされます。

画像アップロード

最後に、イメージのアップロードについて説明します。イメージの管理方法は git と非常に似ています。docker push コマンドを使用して、ローカルイメージをウェアハウスにアップロードできます。デフォルトでは、DockerHub 公式ウェアハウス (ログインが必要) にアップロードされます。コマンドの形式は次のとおりです。

 docker push 名前[:タグ]

アップロードする前に、通常は画像に自分の名前(著者情報)のタグを追加します。

docker タグ testimage:lastest zmc/testimage:lastest

docker pushzmc/testimage:最新

アップロード後に区別するのに役立ちます。

運用保守チーム、開発チーム、研究室のいずれであっても、ニーズに合った環境やシステムイメージを保存し、迅速な展開を実現するために、独自の Docker リポジトリを持つことは必要だと思います。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker イメージの作成、イメージの変更やアップロードの方法などについて詳しく紹介します。
  • Dockerイメージを作成する2つの方法の詳細な説明
  • 最小限の Docker イメージを作成するための Node.js の詳細な説明
  • コミットコマンドを使ってイメージを作成するDocker学習の詳細な説明
  • Web プロジェクト用の Docker イメージを作成する
  • DockerはDockerfileを使用してイメージを作成します
  • Dockerでイメージを作成するためのDockerfile命令の詳細な説明

<<:  MySQL におけるユニーク制約と NULL の詳細な説明

>>:  カレンダーウィジェットのネイティブJS実装

推薦する

mysql の認証、起動、およびサービスの起動のための一般的なコマンド

1. 4つの起動方法: 1.mysqld MySQL サーバーを起動します: ./mysqld --...

MySQL、Oracle、SQL Server のページングクエリ例の分析

最近、Oracle、MySQL、SQL Server 2005 のデータ ページング クエリについて...

Linuxでのaliasコマンドの使い方の詳細な説明

1. 別名の使用alias コマンドは、コマンドのエイリアスを設定するために使用されます。このコマン...

Mac 向け MySQL 5.7.17 のインストールと設定のチュートリアル

1. MySQLをダウンロードする公式サイトのダウンロードページをクリックすると次のページに入ります...

HTML 5 スタイルシートのリセット

この CSS リセットは、Eric Meyers の CSS リセットに基づいて変更されており、特に...

Vue でメニュー権限制御を実装するためのサンプルコード

バックエンド管理システムで作業している場合、通常、メニュー権限制御に関連する問題に遭遇します。もちろ...

最新の JavaScript で非同期タスクを書く方法

序文この記事では、非同期 JavaScript の進化と、それがコードの記述方法にどのような変化をも...

Nginx 設定ファイルの詳細な説明と最適化の提案ガイド

目次1. 概要2. nginx.conf 1) 設定ファイルの場所2) ワーカープロセス3) イベン...

Linux 環境に nginx をインストールするチュートリアル

目次1. 必要な環境をインストールする //gccをインストールする yum で gcc-c++ を...

JavaScriptクロージャの原理と機能の詳細な説明

目次導入クロージャの使用カレー作りパブリック変数の実装キャッシュカプセル化(属性のプライベート化)閉...

ElementUIはカスケードセレクタを実装します

この記事の例では、カスケードセレクターを実装するためのelementUIの具体的なコードを参考までに...

ドラッグ効果を実現するための js オブジェクト指向メソッド

この記事では、ドラッグアンドドロップをJSオブジェクト指向で実装するための具体的なコードを参考までに...

MySQLシリーズ マルチテーブル結合クエリ92および99構文例詳細チュートリアル

目次1. デカルト積現象2. 接続クエリの知識ポイントのまとめ1) 結合クエリとは何ですか? 2) ...

CSSクラス名の問題の詳細な説明

数字で始まる次の CSS クラス名は有効になりません。 .1番目{ 色: 赤; }有効な CSS ク...

Baidu サイト検索が https をサポートしていない問題の解決策 (テスト済み)

最近、携帯電話で https が有効になりました。緑色のロックを取得するには、次の問題を解決する必要...