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 実装

推薦する

HTML 特殊文字変換表

キャラクター小数点文字番号エンティティ名---未使用空間---スペースバー! ! ---感嘆符「 」...

CentOS 6.5 インストール mysql5.7 チュートリアル

1. 新機能MySQL 5.7 はエキサイティングなマイルストーンです。デフォルトの InnoDB ...

ツリー チャートの実装方法に関する Echarts チュートリアル

ツリーマップは主にツリーのようなデータ構造を視覚化するために使用され、特殊なタイプの階層です。これを...

アニメーションの再生と一時停止を制御するための CSS のヒント (非常に実用的)

今日は、CSS を使用してアニメーションの再生と一時停止を制御する非常に簡単なトリックを紹介します。...

nginx プロキシでの複数の 302 応答の解決策 (nginx Follow 302)

proxy_intercept_errors と recursive_error_pages を使...

Ubuntu 16.04/18.04 に Pycharm と Ipython をインストールするチュートリアル

Ubuntu 18.04の場合1. sudo apt install python 。コマンドライン...

MySQL 8.0 の降順インデックス

序文インデックスが順序付けられていることは誰もが知っていると思いますが、MySQL の以前のバージョ...

CSSのclip-pathプロパティを使用して不規則なグラフィックを表示する

clip-path CSS プロパティはクリッピングを使用して要素の表示可能領域を作成します。領域内...

MySQL の非主キー自己増分使用例の分析

この記事では、例を使用して、MySQL の非主キーの自己増分の使用方法を説明します。ご参考までに、詳...

Linux プログラムの実行中に動的ライブラリをロードできない場合の解決策

Linux でダイナミック ライブラリをロードできません次のような異常事態が発生した場合./test...

Bootstrap FileInputは画像アップロード機能を実装します

この記事の例では、Bootstrap FileInputの具体的なコードを共有して、画像アップロード...

Vueはツリー構造の追加、削除、変更、チェックのサンプルコードを実装します

実は多くの会社がユーザー権限ツリーに似た機能を持っています。最近、追加、削除、修正のツリー構造を書き...

Webフォーム作成スキル

実際、上記の 3 つの表はいずれも 3 行 3 列です。区切り線を非表示にするコツはルールにあります...

大規模な Vue.js プロジェクトの構築と維持のための 10 のベスト プラクティス

目次1. スロットを使用してコンポーネントを理解しやすくし、より強力にする2. Vuexストアを正し...