Centos ベースイメージの作成方法

Centos ベースイメージの作成方法

序文

現在、私の会社で使用しているオペレーティングシステムはすべて CentOS7.4 で、アプリケーションももちろん CentOS 上にデプロイされています。デプロイに Docker を使用する場合、CentOS イメージに基づいて独自のアプリケーション イメージを構築するのは当然ですが、CentOS 基本イメージとアプリケーション イメージの間に基本フレームワーク イメージを構築することもできます。たとえば、基本 JDK イメージ、Python 環境に基づくイメージなどです。イメージを構築した後、アプリケーションをデプロイするときの中国語のプリントアウトが文字化けしたり、ログの時刻が北京時間より 8 時間短い UTC 時刻を示したり、特定のプロセスが起動しているかどうかを確認したいときに telnet コマンド、ps コマンド、netstat コマンドが使用できなかったり、ファイルを編集したいときに vim コマンドも使用できなかったりするといったことに、皆さんも遭遇したことがあると思います。今日は、CentOS イメージに基づいて拡張 CentOS イメージを構築する方法を見ていきます。

ミラーリポジトリの構築

独自のイメージを構築する前に、後で直接使用できるように、イメージを保存する場所が必要です。考え方は 2 つあります。1 つ目は、自分のマシンで構築し、コマンドdocker save -o xxx.tar.gz xxx-image:v1.0で自分のクラウド ディスクにアップロードし、使用時にローカル ディスクにダウンロードしてから、 docker load -i xxx.tar.gzすることです。この方法は問題ありませんが、面倒です (パッケージ化、アップロードとダウンロード、ロード時のディレクトリの検索)。2 つ目は、独自の docker イメージ レジストリを作成し、ローカルで構築したイメージの場合は、タグを再設定するだけで、 docker push で完了します。ダウンロードするときは、 docker pull するだけで、すべてコマンドラインで実行できますが、考えただけでも少し不安になります。

ここまで述べたことを踏まえて、独自のイメージ ウェアハウスを構築する方法を見てみましょう。(この記事では、Alibaba Cloud のウェアハウスのみを使用して、独自の名前空間を構築します)。もちろん、自分でクラウド ホストを申請し、プライベート サーバーを構築することもできます。

まず Alibaba Cloud にログインし、次の図に示すように、サービスからコンテナ イメージ サービスの場所を見つけます。

コンテナミラーサービスをクリックすると、以下に示すようにミラーウェアハウス作成インターフェースが表示されます。

作成をクリックして倉庫作成インターフェースに入ります

情報を入力したら、「次へ」をクリックして画像のアップロード方法を選択します。

私の要件は地元の倉庫から構築することですが、地元の倉庫の構築が最も柔軟な方法であると考えています。

イメージの保存場所を作成したら、ローカルで Dockerfile を作成して独自のイメージを構築できます。

Centos 拡張バージョンイメージをビルドする

1. まず、Dockerfileファイルを作成し、次の内容をファイルに入れます。

Centosより
メンテナー terry.king "[email protected]"

# タイムゾーンパラメータ ENV TZ=Asia/Shanghai を定義します
実行 ls -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone
# エンコーディングを設定する RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV LC_ALL "zh_CN.UTF-8"

# 基本的な yum パッケージをインストールします。RUN yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel patch net-tools iproute telnet bind-utils wget kde-l10n-Chinese glibc-common

2. Alibaba Cloud Dockerレジストリにログインする

sudo docker login --username=Alibaba Cloud アカウント registry.cn-shenzhen.aliyuncs.com

ログインに使用するユーザー名は Alibaba Cloud アカウントのフルネーム、パスワードはサービスを有効にしたときに設定したパスワードです。

製品コンソールのホームページでログイン パスワードを変更できます。ミラーリポジトリを作成するための2番目のボタンです。左側にレジストリログインパスワードを設定します。

3. イメージをビルドしてレジストリにプッシュする

次のように docker build を実行します。
$ docker tag terrylmay/centos registry.cn-shenzhen.aliyuncs.com/terrylmay/centos:[イメージのバージョン番号]
$ docker push registry.cn-shenzhen.aliyuncs.com/terrylmay/centos:[イメージのバージョン番号]

デフォルトのイメージバージョン番号は最新です

要約する

このようにして、アプリケーション イメージを構築するときに、序文で述べた一連の問題を解決できます。独自のアプリケーション イメージをすばやく構築するのに便利です。

以下もご興味があるかもしれません:
  • CentOS 6.5はSSH経由でログインできるDockerイメージを作成します

<<:  ネイティブ JavaScript を使用して計算機のサンプル コードを開発する

>>:  Windows での MySQL5 グリーン バージョンのインストールの概要 (推奨)

推薦する

MYSQL 演算子の概要

目次1. 算術演算子2. 比較演算子3. 論理演算子4. ビット演算子5. 演算子の優先順位1. 算...

SSHトンネルを使用してMySQLサーバーに接続する方法

序文場合によっては、データベースのイントラネット アドレスしか知らず、イントラネット経由で接続できな...

HTMLのimgタグで画像の中心部分だけを表示する方法(3つの方法)

HTML の img タグで画像の中心を表示する方法は、現在 3 つあります。ここで記録しておきま...

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

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

Linux で fdisk を使用してディスクをパーティション分割する方法

Linux パーティションでよく使用されるコマンド: fdisk、MBR パーティション テーブルの...

MySQL 8.0.24 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.24のインストールチュートリアルを参考までに紹介します。具体的な内...

JavaScript の 7 つのデータ型の詳細な説明

目次序文:詳しい紹介:練習する:要約する序文: Python、Java、Cシリーズなど、すべての主要...

uniapp WeChatミニプログラムのグローバル共有を実装するためのサンプルコード

目次グローバル共有コンテンツファイルを作成するファイルをインポートしてグローバルに登録するページ共有...

MySQL ビッグデータ クエリ最適化エクスペリエンスの共有 (推奨)

本格的な MySQL 最適化! MySQL のデータ量が少ない場合は最適化は不要です。データ量が多い...

Flask と Vue のフロントエンドとバックエンドを分離したプロジェクト展開のサンプル コード

以前、プロジェクトを開発しました。バックエンドのインターフェースを書くために Flask フレームワ...

Angular 依存性注入の説明

目次概要1. 依存性注入2. Angularの依存性注入フレームワーク概要依存性注入: デザインパタ...

overflow:autoの使い方の詳しい説明

本文に入る前に、オーバーフローとフレックスレイアウトの使い方をいくつか紹介します。 overflow...

border-radius 値の設定に関する質問

問題記録今日はプログレスバーに似た小さなコンポーネントを完成させるつもりでした。プロトタイプは次のよ...

メンテナンスしやすい CSS コードを書くための 5 つのガイドライン

1. スタイルシートの先頭にコメント ブロックを追加して、スタイルシートの作成日、作成者、タグ、その...

MySQL 悲観的ロックと楽観的ロックの実装

目次序文実際の戦闘1. ロックなし2. 悲観的ロック3. 楽観的ロック要約する序文悲観的ロックと楽観...