Dockerを使用してクローンリポジトリを使用してGitイメージを構築する

Dockerを使用してクローンリポジトリを使用してGitイメージを構築する

概要

私は 1 年以上 Docker を使用しています。最近、サービスをすばやくオーケストレーションしているときに、シェル スクリプトで使用されている git がまだネイティブであることに気付きました。

ここに画像の説明を挿入

そこでgitをコンテナ化することに決め、dockerhubで検索したところ、ダウンロード量が比較的多いこのイメージを見つけました。

ここに画像の説明を挿入

dockerfileを見た後、ニーズに適していないと感じました

ここに画像の説明を挿入

ここではボリュームや ssh は提供されていません。リポジトリをホスト マシンにマップすることも、プライベート リポジトリをクローンする機能もありません (ささやき声: どちらも可能ですが、不便です)。他の gitclient イメージも同様です。

ここに画像の説明を挿入
私には車輪の再発明しかできない。

ミラーアドレス

この記事のイメージは dockerhub にプッシュされています。必要に応じて直接使用できます: https://hub.docker.com/r/wuliangxue/git

車輪

まず、Docker Hub アカウントが必要です。次に、Docker を使用してサーバーにログインし、イメージを Docker Hub リポジトリにプッシュします。これにより、将来の移行が容易になります。

ここに画像の説明を挿入

任意のディレクトリにgit.dockerfileファイルを作成する

ここに画像の説明を挿入

Dockerfileに以下を入力します

ここに画像の説明を挿入

ここで簡単に説明しますと、当初はUbuntu 18.04ベースのミラーが提供されていましたが、サイズが大きすぎたため、Alpineに置き換えられました。国内ユーザーは Linux ソフトウェア ソースを国内ミラーに切り替える必要があります。そうしないと、ソフトウェアのインストール時にさまざまな問題が発生します。このイメージ自体はプロジェクトのクローン作成用なので、git と ssh のみがインストールされます。以下は、プライベート ウェアハウスのクローンを作成し、対応する ssh ディレクトリ ボリュームを開くための準備です。作業ディレクトリが設定されているため、git clone 時にデフォルトのプロジェクトは/git/repoディレクトリにあります。ミラーを使用する場合は、このディレクトリをマウントするだけです。

イメージを構築する

次のコマンドを入力します: docker build -t wuliangxue/git:0.1-alpine -f git.dockerfile .

ここに画像の説明を挿入

「Successfully」と表示されたら、イメージが正常に構築されたことを意味します。

ここに画像の説明を挿入

ここでは、Ubuntu 18.04 をベースに構築されたイメージのサイズを比較します。タグ 0.1 のイメージは Ubuntu 18.04 [187M] をベースに構築されており、タグ 0.1-alpine のイメージは alpine:3.12 [30.1M] をベースに構築されています。

ここに画像の説明を挿入

ミラーの使用

まず、作成したイメージを使用してパブリックリポジトリをクローンし、次のコマンドを実行します。

docker run --rm --name git \
	-v "$(pwd)":/git/repo wuliangxue/git:0.1-alpine \
	git クローン https://github.com/docker-library/mysql.git 

ここに画像の説明を挿入

このリポジトリはクローンされました。

ここに画像の説明を挿入

クローンの詳細を表示する場合は、前のコマンドに-itを追加できます。

docker run -it --rm --name git \
	-v "$(pwd)":/git/repo wuliangxue/git:0.1-alpine \
	git クローン https://github.com/docker-library/mysql.git 

ここに画像の説明を挿入

プライベート倉庫を複製する必要がある場合はどうすればよいですか? ?
ssh 公開鍵と秘密鍵をコンテナにマウントできます。
次のコマンドを実行します [デモンストレーションの目的で、公開鍵と秘密鍵を現在のディレクトリに直接配置していることに注意してください]

docker run -it --rm --name git \
-v "$(pwd)":/git/repo \
-v "$(pwd)/id_rsa":/root/.ssh/id_rsa \
-v "$(pwd)/id_rsa.pub":/root/.ssh/id_rsa.pub \
wuliangxue/git:0.1-alpine git クローン [email protected]:wuliangxue/douyu.git 

ここに画像の説明を挿入

ここで-itパラメータを追加する必要があることに注意してください。これは、プライベート リポジトリを初めてクローンするときに、git はアドレスの信頼性を知らないため (known_hosts ファイルに記録がなく、最初の使用ではそのようなファイルがない)、要求されるためです。 -itパラメータがなく、ターミナル対話機能が有効になっていない場合、クローンは直接失敗します。

「yes」と入力して Enter キーを押すと、プライベート ウェアハウスが複製されます。

ここに画像の説明を挿入

最後に、このホイールを Dockerhub にプッシュして、次回サーバーを変更するときに直接プルして使用できるようにします。

ここに画像の説明を挿入

これで、Docker を使ってクローンリポジトリを使用して Git イメージを構築する方法についての記事は終了です。Docker による Git イメージの構築の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker buildx を使用してマルチプラットフォーム イメージをビルドし、プライベート リポジトリにプッシュする方法
  • Docker用国産イメージウェアハウスの使い方
  • Jenkins は Docker イメージを構築し、Harbor ウェアハウスにプッシュします
  • docker-maven-pluginはイメージをパッケージ化し、プライベートウェアハウスにアップロードします。
  • Dockerイメージリポジトリの使い方
  • Docker プライベート イメージ リポジトリの Alibaba Cloud 展開手順
  • Dockerコンテナ練習用イメージウェアハウス

<<:  HTML テーブルタグチュートリアル (20): 行の背景色属性 BGCOLOR

>>:  読み込み進捗バーのネイティブ JS 実装

推薦する

Vue開発ウェブサイトSEO最適化方法の詳細な説明

ページデータの表示には Vue などの js のデータバインディング機構が使用されるため、クローラー...

HTMLでカメラを読み込む方法

効果図: 全体的な効果: ビデオ読み込み中: 写真:ステップ1: HTML要素を作成するまず、HTM...

Vue3サンドボックスの仕組みの詳しい説明

目次序文ブラウザコンパイル版ローカルプリコンパイルバージョン要約する参照する序文vue3サンドボック...

MySQLの累積集計原理と使用例の分析

この記事では、例を使用して、MySQL 累積集計の原理と使用方法を説明します。ご参考までに、詳細は以...

純粋な HTML+CSS でオリンピック リングを実装するためのサンプル コード

レンダリング コード - 青と黄色のリングを例に挙げます <div class="コ...

開発者がデータベースロックを詳細に理解する必要がある理由

1.ロックしますか? 1.1 ロックとは何ですか?ロックの本当の意味は、鍵またはコードで開くことがで...

Dockerで作成したコンテナを削除する方法

Dockerで作成したコンテナを削除する方法1. まず、docker -s -aコマンドを使用してす...

jQueryのチェーンプログラミングスタイルの詳細な例

チェーンプログラミングの実装原理jQuery を使用すると、開発者は常にドット構文を使用して独自のメ...

Vueのフィルターとディレクティブの詳細な説明

目次vueカスタムディレクティブグローバル指令ローカル指示使用フック関数(両方ともオプション)使用方...

Dockerイメージを素早くデプロイして実行する最新のIDEAプロセスの詳細な説明

背景docker とアイデアを使用して、Java Web の開発、展開、運用までのプロセス全体を実現...

vue.js でよく使われる v 命令の解析

目次Vue でのモデルバインド表示の if の v-text の説明v-html: v-オンv-if...

関連するプロパティのリストを含む HTML エリア イメージ ホットスポットの使用の概要

<area> タグは主にイメージマップで使用されます。イメージマップにアクティブ領域 (...

MySQL binlog を使用して誤って削除されたデータベースを復元する方法

目次1 現在のデータベースの内容を表示し、データベースをバックアップする2 bin_log関数を有効...

ライフゲームの JavaScript 実装

目次コンセプト紹介論理的ルール完全なコード主な実装コンセプト紹介セルオートマトンとは、コンピュータの...

Dockerコンテナの状態変換の実装

Dockerコンテナの状態遷移図2度目の実戦 [root@localhost ~]# docker ...