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

推薦する

Hyper-V なしで Windows 10 を動作させるソリューション

Windows10 Home Edition でHyper-vを有効にする方法をまだ探していますか?...

Linux のごみ箱メカニズムの実装プロセスと使用方法の詳細な説明

序文: Linux システムでの rm は元に戻せません。コマンドの設計自体に問題はありません。問題...

Mysql の主キー インデックスと非主キー インデックスの違いについて簡単に説明します。

目次インデックスとは何か主キーインデックスと通常のインデックスの違いインデックスにはどのデータ構造が...

vue keep-alive の簡単な概要

1. 機能主にコンポーネントの状態を保持したり、再レンダリングを回避したりするために使用されます。 ...

Windows での MySQL 8.0.15 の詳細なインストールと使用のチュートリアル

この記事では、MySQL 8.0.15の詳細なインストールと使用方法のチュートリアルを参考までに紹介...

ネイティブ JavaScript でショッピングカートを実装する

この記事では、ショッピングカートを実装するためのJavaScriptの具体的なコードを参考までに紹介...

HTMLのタグについての簡単な説明

0. タグとは何ですか? XML/HTML コードコンテンツをクリップボードにコピー<入力 t...

nodejs で worker_threads を使用して新しいスレッドを作成する方法

導入前の記事で述べたように、NodeJS には 2 種類のスレッドがあります。1 つは、ユーザー リ...

ウェブサイトのアクセス速度を向上させるための徹底的な最適化に関するヒント

<br />ウェブサイトのアクセス速度はウェブサイトのトラフィックに直接影響を及ぼし、ウ...

UDP 接続オブジェクトの原理分析と使用例

以前、UDP を使い始めるために簡単な UDP サーバーとクライアントの例を作成しましたが、実際に使...

セマンティックHTML構造を理解する方法

HTML と CSS は誰もが知っていると思います。HTML の構造と CSS の表現の分離も知って...

Vueのシンプルな状態管理ストアモードを理解する方法

目次概要1. store.jsを定義する2. store.js を使用するコンポーネント3. 成果を...

MySQLデータベースを定期的に自動バックアップする方法

データは貴重なものであることは誰もが知っています。データをバックアップしなければ、データをそのまま放...

Linux は n 日前のログとサンプルコマンドを自動的に削除します

1. ファイル削除コマンド:対応するディレクトリを検索します -mtime + 日数 -name &...

HTML の ReadOnly と Enabled の違い

ReadOnly 属性を持つ TextBox は、クライアント上で次のマークアップとして表示されます...