Dockerイメージ作成の完全なプロセス

Dockerイメージ作成の完全なプロセス

序文

この記事では、CentOS イメージの作成を例に、イメージのカスタマイズ、パッケージ化、リモート リポジトリへのプッシュのプロセスについて説明します。手順は比較的簡単なので、すぐに始めることができます。

作成手順

CentOSベースイメージを作成する

ビルド ディレクトリと Dockerfile を作成し、Dockerfile 内のイメージ関連の設定を編集します。

echo "現在のユーザーディレクトリにディレクトリ docker/build/centos_7.8.2003 を作成します" > /dev/null
ディレクトリは、 ~/docker/build/centos_7.8.2003 です。

echo "~/docker/build/centos_7.8.2003 ディレクトリに Dockerfile を作成します" > /dev/null
cat > ~/docker/build/centos_7.8.2003/Dockerfile << EOF 
# ベースイメージを指定する FROM centos:7.8.2003

# 環境変数 ENV LANG=zh_CN.UTF-8 を設定します \\
    言語=zh_CN:zh \\
    LC_ALL=zh_CN.UTF-8

# イメージを構築するときにのみこれらのシェルコマンドを実行します RUN yum update -y && \\
    yum 再インストール -y glibc-common && \\
    yum インストール -y telnet net-tools && \\
    yum すべてをクリーンアップ && \\
    rm -rf /tmp/* rm -rf /var/cache/yum/* && \\
    ロケール定義 -c -f UTF-8 -i zh_CN zh_CN.UTF-8 && \\
    ln -sf /usr/share/zoneinfo/アジア/上海 /etc/localtime
終了

イメージをビルドするには、初心者向けチュートリアル - docker build を参照してください。形式はdocker build -t <鏡像名>:<鏡像版本號> <Dockerfile所在目錄>です。イメージ バージョン番号が指定されていない場合、デフォルトはlatestです。

# ~/docker/build/centos_7.8.2003/Dockerfile を解析して、base-centos という名前のミラーを構築します。 docker build -t base-centos ~/docker/build/centos_7.8.2003

ビルドが完了すると、使用されたベース イメージとビルドによって生成された新しいイメージがローカル イメージ リストに表示されます。

Docker イメージ

画像-20211115184348966

コンテナを作成してカスタマイズする

新しいイメージを使用してコンテナを作成し、入力します。このコンテナは仮想 CentOS システムです。

echo "base-centos イメージを使用してコンテナを作成し、base-centos という名前を付けます" > /dev/null
docker 実行 \
--name ベース Centos \
--privileged=true \
-dit \
ベース-centos \
/usr/bin/init で、

echo "Centos コンテナに入る" > /dev/null
docker exec -it ベース Centos /bin/bash

よく使用するツールをインストールするなど、コンテナ内の仮想システムをカスタマイズします。実際、これらは Dockerfile に記述して、RUN 命令の後に定義することもできます。

echo "vim: ファイルを編集" > /dev/null
yum インストール -y vim

echo "lsof: ポート情報の表示に便利" > /dev/null
yum インストール -y lsof

echo "wget: ファイルのダウンロード" > /dev/null
yum インストール -y wget

echo "tree: ディレクトリ構造を表示" > /dev/null
yum インストール -y ツリー

echo "pythonをインストール" > /dev/null
yum インストール -y python-devel

echo "C コンパイル環境" > /dev/null
yum インストール -y gcc gcc-c++
yum インストール -y zlib
yum インストール -y zlib-devel
yum インストール -y tcl ビルド必須 tk gettext

カスタムコンテナを使用して新しいイメージを作成する

コマンドの形式は、 docker commit <容器名稱或者ID> <生成的鏡像名>:<鏡鏡像版本號>です。イメージのバージョン番号が書き込まれていない場合、デフォルトはlatestです。このコンテナは、作成時に停止状態になることもあります。

docker コミット base-centos centos:7.8.2003_v1

この時点で、イメージが作成され、イメージ リストに新しいイメージが表示されます。

画像-20211115185738542

イメージtarballを保存して読み込む

イメージをdocker save -o <文件名> <鏡像名>:<鏡像標簽>の形式で tarball として保存します。初心者向けチュートリアルの docker save を参照してください。

docker save -o ~/docker/build/centos_7.8.2003/centos_7.8.2003.tar centos:7.8.2003_v1 

画像-20211116095459570

tarball をロードしてイメージを生成します。

docker load --input ~/docker/build/centos_7.8.2003/centos_7.8.2003.tar

画像-20211116115612979

重複するイメージがすでに存在する場合、ロード コマンドは無効です。

画像-20211116115743282

イメージをリモートリポジトリにプッシュする

Docker はリモート倉庫にログインします。形式はdocker login --username=<用戶名> <倉庫地址>またはdocker login -u <用戶名> -p <密碼> <倉庫地址>です。

画像-20211116150001899

docker tag <鏡像ID> <遠程鏡像倉庫地址>:<鏡像版本號>タグ。

echo "イメージアドレスとバージョン番号をマーク" > /dev/null
docker タグ 66b1bc81e1f2 registry.cn-shanghai.aliyuncs.com/exposure/centos:7.8.2003_v1

画像-20211116150846001

docker push <遠程鏡像倉庫地址>:<鏡像版本號>リモート リポジトリにプッシュします。

echo "リモートリポジトリにプッシュ" > /dev/null
docker プッシュ registry.cn-shanghai.aliyuncs.com/exposure/centos:7.8.2003_v1

参考リンク

CSDN - Docker 用の一般的な CentOS7 イメージ

初心者向けチュートリアル - Docker コマンド

Docker イメージ作成の全プロセスに関するこの記事はこれで終わりです。Docker イメージ作成に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerfileを使用して独自のイメージを作成する方法
  • 各種Dockerイメージの作成方法の詳しい説明
  • Dockerイメージ作成の詳細な紹介
  • Dockerイメージの作成とプロジェクト全体のワンクリックパッケージングとデプロイ
  • 独自の Docker イメージを作成して Dockerhub にアップロードする方法
  • Dockerイメージの作成、アップロード、プル、デプロイを理解するための記事
  • Dockerを使用して分散lnmpイメージを作成する

<<:  24 の実用的な JavaScript 開発のヒント

>>:  CSSは親要素の下の最初の子要素を選択します(:first-child)

推薦する

mysql データ型変換の実装

1. 問題下図のような表があり、結果値がreference_high値より大きいデータを見つける必要...

MySQL マルチテーブル結合入門チュートリアル

接続は、実際の外部キー(人工的に作成された 2 つのテーブル間の対応関係を指します。対照的に、FOR...

波効果を作成するための CSS のトリック

純粋な CSS を使用して波の効果を実現することは、常に非常に困難でした。 波形曲線を実現するにはベ...

MySQL関数の包括的な概要

目次1. MySQLでよく使われる文字列関数2. 数値関数3. 日付と時刻の機能4. プロセス機能5...

Linuxの運用と保守の基本プロセス管理と環境構成分析

目次1. プロセスの基本的な概要2. プロセスの構成要素3. プロセス環境4. プロセスステータス5...

Web ページのエンコーディングで gbk や gb2312 ではなく utf-8 が使用されるのはなぜですか?

選択肢がある場合は、UTF-8を使用することをお勧めします。実際、Windows システム自体のプロ...

jsでシンプルなパズルゲームを実現する

この記事では、簡単なパズルゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な...

HTML、CSS、RSSフィードが正しいかどうかを確認する無料ツール

この種のエラーに対処するための 1 つの方法は、まずマークアップとスタイルシートを検証することです。...

8桁の割引コードをランダムに生成し、MySQLデータベースに保存します。

現在、多くの企業が割引コードを通じてプロモーションを行っています。今では、8桁の割引コードを実装して...

{{ }} で関数を直接使用する WeChat アプレットの例

序文WeChat アプレット開発 (ネイティブ wxml、wxcss) で、{{ }} 内で直接メソ...

CSS で「プラス記号」効果を実装するためのサンプルコード

以下に示すプラス記号の効果を実現するには: この効果を実現するには、div 要素だけが必要です。 b...

Nginx サーバーで Web クローラーをブロックおよび禁止する方法

通常、すべての Web サイトは、多くの非検索エンジン クローラーに遭遇します。これらのクローラーの...

mysql ダーティ ページとは何ですか?

目次ダーティページ(メモリページ)ダーティページが表示されるのはなぜですか?メモリ管理メカニズムの簡...

mysql インストーラ コミュニティ 8.0.12.0 インストール グラフィック チュートリアル

このチュートリアルでは、参考のためにmysqlインストーラコミュニティ8.0.12.0のインストール...

Dockerコンテナを停止または強制終了できない問題の解決策

Docker バージョン 1.13.1問題プロセス特定の環境のMySQLコンテナを停止、強制終了、ま...