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)

推薦する

Vueでデータを読み取るためにこれを悪用しないでください

目次序文1. これを使用してデータ内のデータを読み取るプロセス2. Dep.target はいつ存在...

丸い角や鋭い角の代わりに文字を使用することに関する研究経験の共有

1. フォントと文字表示の関係左側と右側の鋭角部分は Songti フォントで表示されます: &l...

ウェブメッセージボード機能を実現するjs

この記事の例では、Webメッセージボードを実装するためのjsの具体的なコードを参考までに共有していま...

Vueはシンプルな画像切り替え効果を実装します

この記事では、Vueの具体的なコード例を参考までに紹介します。具体的な内容は以下のとおりです。 コー...

Linuxオンラインソフトウェアgccをオンラインでインストールする方法

Linux オンラインインストール関連コマンド: yum install: すべてインストールyum...

MySQL共通インデックスとユニークインデックスの詳細な説明

シナリオ1. ID番号のフィールドを備えた市民システムを維持する2. ビジネス コードでは、重複する...

時刻を保存するために適切な MySQL の datetime 型を選択する方法

データベースを構築してプログラムを書くとき、日付と時刻の使用は避けられません。データベースには、ti...

Linux での Nginx アンチホットリンクと最適化の実装コード

バージョン番号を非表示バージョン番号は非表示になっていません。セキュリティを強化するために、バージョ...

HTMLページの読み込み速度を上げる方法

(1)HTTPリクエストを減らす。 (リソース ファイルをマージし、イメージ スプライトを使用します...

MySQL はパスワード強度の検証をオフにします

パスワード強度検証について: [root@mysql mysql]# mysql -uroot -p...

bashの初期化メカニズムの詳細な説明

Bash 初期化ファイル対話型ログインシェル次の場合にはログイン シェルを取得できます。ローカル端末...

スワイパープラグインを使用して Vue でカルーセルを実装する例

目次vue - スワイパープラグインを使用してカルーセルを実装するカルーセルのバグを解決するには、w...

CentOS 6.5 i386 インストール MySQL 5.7.18 詳細チュートリアル

ほとんどの人はMySQLをコンパイルしてシステムディレクトリに置きますが、私のやり方はコンパイルした...

CSS3 で実装された価格表

結果: 実装コードhtml <div id="価格表" class=&qu...

Vueのコンポーネントの詳細な説明

目次1. コンポーネントの登録2. コンポーネントの使用3. 父から息子へ4. 息子から父へ5. ス...