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 背景画像パスの問題に対する完璧なソリューション

推薦する

MySQL 面接でよく聞かれる質問への回答

序文:さまざまな技術職の面接では、MySQL 関連の質問がよくされるようです。開発職の面接でも運用職...

CSS3 メディアクエリにおけるデバイス幅と幅の違いの詳細な説明

1.デバイス幅定義: 出力デバイスの画面表示幅を定義します。 Web ページが Safari で開か...

ReactのPropsの簡単な比較

目次クラスコンポーネントのプロパティ比較浅い同等の浅い比較機能コンポーネントの簡単な比較先週面接に行...

VMware ESXi 6.0 および仮想マシンのインストール チュートリアルの展開 (画像とテキスト)

社内には以前からアイドル状態だった、構成の整ったサーバーがあったので、EXSI 6.0 を使って複数...

mysql の find_in_set 関数の基本的な使い方

序文これは私が最近見つけた新しい機能です。プロジェクトでの私の使用シナリオは次のとおりです。アプリケ...

Linux カーネルプログラミングにおけるコンテナの of() 関数の紹介

序文Linux カーネルプログラミングでは、マクロ関数 container_of(ptr, type...

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

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

MySQL の NOT IN 充填ピットの NULL 列の問題の解決方法

以前、会社で小さな機能に取り組んでいたとき、特定の状況でデータがいくつあるかを数えてから問題を修正し...

CSSの幅と高さのデフォルト値の詳細な説明:autoと%

結論は幅の%: 包含ブロック(親要素)の幅に基づいて、親の制限を超える幅のパーセンテージを定義します...

MySQL の一般的なツール例の概要 (推奨)

序文この記事では主にMySQLでよく使われるツールに関する関連コンテンツを紹介し、皆さんの参考と学習...

純粋な CSS3 で水平無限スクロールを実装するためのサンプル コード

この記事の例はすべて小さなプログラムで書かれていますが、実装される機能には影響しません。 wxmlル...

JavaScript プロトタイプとプロトタイプチェーンの深い理解

目次1. プロトタイプとは何ですか? 2. プロトタイプ__プロト__ 4. コンストラクター5. ...

XHTMLコードの一般的なアプリケーション問題をまとめる

<br />しばらくの間、多くの人が XHTML の使い方を知らないことに気付きました。...

MySql ストアド プロシージャ パラメータの初歩的な使用法の詳細な説明

パラメータでのストアドプロシージャの使用IN パラメータは、プロシージャに情報を渡すためにのみ使用さ...

Dockerイメージのサイズを縮小する6つの方法

2017 年に Vulhub に取り組み始めてから、私は厄介な問題に悩まされてきました。Docker...