Dockerイメージを構築する2つの方法

Dockerイメージを構築する2つの方法

Docker イメージ リポジトリからダウンロードしたイメージがニーズを満たさない場合は、次の 2 つの方法でイメージを変更できます。

  • 既存の画像から画像を更新する
  • ゼロからイメージを構築する

既存のイメージからイメージを更新します。

イメージを更新する前に、イメージを使用してコンテナを作成する必要があります。

ここに画像の説明を挿入

コンテナを入力します:

docker run -t -i db2b37ec6181 /bin/bash

実行中のコンテナで apt-get update コマンドを使用して更新します。操作が完了したら、exit コマンドを入力してコンテナを終了します。
現時点では、ID 0aab061e6f5a のコンテナが、ニーズに応じて変更されたコンテナです。コンテナのコピーは、docker commit コマンドでコミットできます。

ここに画像の説明を挿入

[root@localhost .ssh]# docker commit -m="has update" -a="zyn" 0aab061e6f5a mysql:v2
sha256:3dda266fd05963e816f22e3dec2584589977e040f7202e0421b0151290e4f54b

上記コマンドのパラメータの説明:

-m: 説明情報を送信する
-a: 画像の作成者を指定する
0aab061e6f5a: コンテナID
mysql:v2: 作成するターゲットイメージ名を指定します

docker images コマンドを使用して、新しいイメージ mysql:v2 を表示できます。

ここに画像の説明を挿入

イメージを最初から構築する:

docker build コマンドを使用して、最初から新しいイメージを作成します。これを行うには、Docker にイメージの構築方法を指示する一連の命令を含む Dockerfile ファイルを作成する必要があります。

たとえば、jar パッケージから Docker イメージをビルドします。

まず、Dockerfile ファイルを作成します。

java:8より
メンテナー zyn
jenkins.war をコピー /usr/local/jenkins.war
エクスポーズ8080
エントリポイント ["java", "-jar", "/usr/local/jenkins.war", "--httpPort=8080"]

上記コマンドのパラメータの説明:

java:8はダウンロードしたベースイメージです
MAINTAINERは著者です
COPYはローカルjarをイメージにコピーします
EXPOSEはミラーのオープンインターフェースを宣言します
ENTRYPOINTはdocker run時に指定されるコマンドパラメータであり、RUNやCMDコマンドに似ています。

各命令は画像上に新しいレイヤーを作成します。各命令のプレフィックスは大文字にする必要があります。

次に、jar を Dockerfile と同じディレクトリに配置します。

ここに画像の説明を挿入

最後に、Dockerfile ファイルを使用して、docker build コマンドでイメージをビルドします。

注: Dockerfile の後のドットは、現在のディレクトリがコンテキスト ディレクトリとして使用されることを意味します。イメージを作成すると、コンテキスト ディレクトリ内のファイルがイメージにコピーされます。つまり、jar パッケージがイメージにコピーされます。

[root@localhost zyn]# docker build -t my_jenkins:1.0 -f Dockerfile .
ビルド コンテキストを Docker デーモンに送信しています 67.29 MB
ステップ 1/5: java:8 から
8: library/javaから取得
5040bd298390: プル完了
fce5728aad85: プル完了
76610ec20bf5: プル完了
60170fec2151: プル完了
e98f73de8f0d: プル完了
11f7af24ed9c: プル完了
49e2d6393f32: プル完了
bb9cdec9c7f3: プル完了
ダイジェスト: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
ステータス: Java の新しいイメージをダウンロードしました:8
 ---> d23bdf5b1b1b
ステップ 2/5: MAINTAINER zyn
 ---> d8027d9002f4 で実行中
中間コンテナ d8027d9002f4 を削除しています
 ---> cdd9362868cb
ステップ 3/5: jenkins.war を /usr/local/jenkins.war にコピーする
 ---> 3a276d766222
ステップ4/5: EXPOSE 8080
 ---> 99cf28fb33a8 で実行中
中間コンテナ 99cf28fb33a8 を削除
 ---> de89b785c80d
ステップ 5/5: ENTRYPOINT ["java", "-jar", "/usr/local/jenkins.war","--httpPort=8080"]
 ---> c3a7e16eaa11 で実行中
中間コンテナ c3a7e16eaa11 を削除しています
 ---> 5107b1256f01
5107b1256f01 の構築に成功しました
my_jenkins:1.0 のタグ付けに成功しました

ここに画像の説明を挿入

上記の Docker イメージを起動します。

[root@localhost zyn]# docker run -itd --name jenkins -p 18080:8080 my_jenkins:1.0
5e185bb8e4866b8018f0b3bb7a4845360d3d4efc5bd2509d84fe118929fe52b3

ここに画像の説明を挿入

これで、Docker でイメージをビルドする 2 つの方法についての説明は終了です。Docker でイメージをビルドする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerfileイメージ構築ファイルとDockerの関連コマンドの詳細な紹介
  • Dockerfile を使用して MySQL イメージを構築し、データの初期化と権限設定を実装する詳細な説明
  • Docker ベースイメージをゼロから構築する方法
  • Jenkins が Docker イメージをビルドする例
  • Docker マルチステージイメージ構築の実装
  • Dockerfileを使用してイメージを構築する方法

<<:  ページデザインにおけるテーブルとdivの適切な適用についての簡単な説明

>>:  Webpack パッケージング CSS 背景画像パスの問題に対する完璧なソリューション

推薦する

Angularルーティングアニメーションと高度なアニメーション機能の詳細な説明

目次1. ルーティングアニメーション2. グループクエリとスタガー1. ルーティングアニメーションル...

MySQLパラダイムの使用に関する詳細な説明

1. パラダイムこのパラダイムの英語名は Normal Form であり、1970 年代にリレーショ...

JavaScript ベースのシンプルなカルーセルの実装

この記事では、シンプルなカルーセルを実装するためのJavaScriptの具体的なコードを参考までに紹...

MySQL における between の境界と範囲の説明

境界範囲間のmysql間の範囲は両側の境界値を含む例: 3 から 7 までの id は、id >...

Mapper SQL ステートメント フィールドとエンティティ クラス属性名の関係は何ですか?

背景: 1. データベースに通知テーブルがある あなたは見ることができますgmt_create、通知...

Nginx操作応答ヘッダー情報の実装

前提条件: ヘッダー情報操作をサポートするには、ngx_http_headers_module モジ...

Linux chkconfig コマンドの使用

1. コマンドの紹介chkconfig コマンドは、システム サービスの実行レベル情報を更新および照...

モバイル開発における 1px ラインの理解と解決策

1pxの線が太くなる理由モバイルプロジェクトに取り組むとき、設計図に従って要素ノードのサイズとスタイ...

jsは水平および垂直スライダーを実現します

最近、練習プロジェクトをしていたときにスライダーを使う必要があったので、調べてみました。まず、水平ス...

Linux で圧縮ファイルの内容を表示する 10 の方法 (要約)

一般的に、アーカイブされたファイルや圧縮されたファイルの内容を表示するには、まず解凍してから表示する...

計算機機能を実装するミニプログラム

この記事の例では、計算機機能を実装するためのミニプログラムの具体的なコードを参考までに共有しています...

WeChatミニプログラムユーザー認証による携帯電話番号の取得(getPhoneNumber)

序文ミニプログラムには、ユーザーを取得するための非常に便利な API があり、getPhoneNum...

MySQL マスタースレーブレプリケーションの実践の詳細説明 - GTID ベースのレプリケーション

GTIDベースのレプリケーション導入GTID ベースのレプリケーションは、MySQL 5.6 以降に...

Vueはルールを使用してフォームフィールドの検証を実装します

Vue でフォーム フィールドを記述および検証する方法は多数あります。このブログでは、より一般的に使...

React 非親子コンポーネントパラメータ渡しのサンプルコード

React は、ユーザー インターフェイスを構築するための JavaScript ライブラリです。 ...