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)

推薦する

Docker コンテナのカスタム ホストのネットワーク アクセス操作

docker-compose.yml に extra_hosts キーワードを追加すると、コンテナの...

SQL 実装 LeetCode (185. 部門内で最も給与の高い上位 3 名)

[LeetCode] 185. 部門別給与上位3位従業員テーブルにはすべての従業員が保持されます。...

MySQL の 3 つの Binlog 形式の概要と分析

1つ。 Mysql Binlog フォーマットの紹介 Mysql binlog ログには、State...

MySQL スロークエリログの基本的な使い方チュートリアル

スロークエリログ関連のパラメータMySQL スロー クエリ関連のパラメータの説明: slow_que...

Winにmysqlをインストールする詳細な手順

この記事では、参考までにWinにmysqlをインストールする詳細な手順を紹介します。具体的な内容は次...

1 つの記事で Vuex を理解する

目次概要Vuex の 4 つの主要オブジェクト状態の使用突然変異の使用ゲッターの使用アクションの使用...

JavaScript の BigIn 関数の共通プロパティをまとめます

目次1. 概要2. 属性1. 数学演算子2. 比較演算子3. ブール演算結論1. 概要BigInt ...

Linuxは、単一のIPをバインドするためにデュアルネットワークカードを実装するためにボンドを使用します。サンプルコード

ネットワークの高可用性を実現するには、複数のネットワーク カードを仮想ネットワーク カードにバインド...

SQLはLeetCodeを実装します(180.連続した数字)

[LeetCode] 180. 連続した数字少なくとも 3 回連続して出現するすべての数字を検索す...

Vue で親子コンポーネントの値を双方向バインドするために v-model を使用するときに発生する問題と解決策

目次シナリオ解決してみる解決するシナリオ今日、コンポーネントの双方向データバインディングにv-mod...

MySQL の中国語ソートの詳細と例

MySQL の漢字ソートの詳細な説明デフォルトでは、MySQL は日付、時刻、および英語の文字列の並...

Linux (Ubuntu) での MySQL 5.6.28 のインストールと設定のチュートリアル

mysql5.6.28のインストールと設定方法1. 基本的なシステム情報を確認し、yumでインストー...

HTML フォーム_PowerNode Java アカデミー

1. フォーム1. フォームの役割HTML フォームは、さまざまな種類のユーザー入力を受け取り、ユー...

MySQLデュアルマスター(マスターマスター)アーキテクチャ構成ソリューション

企業では、データベースの高可用性は常に最優先事項です。多くの中小企業は、MySQL マスター スレー...

通知メッセージカルーセルを実装するための CSS3 トランジション

Vueバージョンをファイルにコピーして使用します <テンプレート> <!-- カル...