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

推薦する

Javascriptはセキュリティ検証に整合性属性を使用します

目次1. スクリプトタグを使用してファイルをインポートする1. ローカルファイルをインポートする2....

Linux が Sudo 権限昇格の脆弱性を公開、どのユーザーでも root コマンドを実行可能

Linux で最も一般的に使用される重要なユーティリティの 1 つである Sudo は、ほぼすべての...

ログインフォームを実装するためのReactサンプルコード

Vue ユーザーとして、React を拡張する時が来ました。antd の導入、less と rout...

VMware WorkStation 14 pro インストール Ubuntu 17.04 チュートリアル

この記事では、VMware Workstation14 ProにUBuntu17.04をインストール...

MySQLの保存場所を新しいディスクに移行する方法

1. 新しいディスクを準備し、現在のルートパーティションと同じファイルシステムでフォーマットし、ディ...

Linuxシステムにおけるプロセス管理の詳細な説明

目次1. プロセスとスレッドの概念2. プロセス管理とは何ですか? 3. プロセス管理の役割4. L...

クールな点滅アラームボタンをおすすめします

効果は以下のとおりです。 コードは次のとおりです (クリックすると展開してソース コードが表示されま...

bodyタグの主な属性の概要

bgcolor="テキストの色" background="背景画像&q...

Java+Tomcat 環境の展開とインストールのプロセス図

次に、Centos7 に Java+Tomcat をインストールします。インターネット上には多くの記...

elementui での el-cascader カスケードセレクタの実践

目次1. 効果2. メインコード1. 効果機能: インターフェイスから取得したデータを使用してオプシ...

HTML はテキストの外側に省略記号を表示します...テキストオーバーフローによって実装されます

div または span に同時に CSS を適用する必要があります。コードをコピーコードは次のとお...

CSS 垂直センタリングの代替実装コードの詳細な説明(非従来型)

序文ご存知のとおり、「CSS で要素を垂直方向に中央揃えするにはどうすればよいか」という質問は、すで...

MySQLのダウンロードとインストールのプロセスの詳細な説明

1: MySqlをダウンロードする公式サイトのダウンロードアドレス: https://dev.mys...

よく使うLinuxコマンドのまとめ

私は2年間運用保守に携わり、多くのコマンドを使用しました。特定のLinuxコマンドを習得すると、どれ...

MySQLの一般クエリログとスロークエリログの分析

MySQL のログには、エラー ログ、バイナリ ログ、一般クエリ ログ、スロー クエリ ログなどが含...