使用Docker构建一个Git镜像使用clone仓库

作者:yijianguanzhu 时间:2023-09-04 23:00:50 

概述

使用docker已经有一年多了,最近意识到,我在快速编排服务的时候,shell脚本里用到的git还是原生的

使用Docker构建一个Git镜像使用clone仓库

于是打算也将git容器化,在dockerhub上搜罗了一筐,找到这个镜像下载量比较高

使用Docker构建一个Git镜像使用clone仓库

进去看了dockerfile后,感觉不太适合需求

使用Docker构建一个Git镜像使用clone仓库

这里没有提供卷,也没有提供ssh,既不能把仓库映射到宿主机,也没有提供clone私有仓库的功能(小声bb:都可以做到,但是不方便)。其他的gitclient镜像也都大同小异。

使用Docker构建一个Git镜像使用clone仓库
只能自己造个轮子了。

镜像地址

本文的镜像以push到dockerhub,有需要可直接使用: https://hub.docker.com/r/wuliangxue/git

轮子

首先需要一个dockerhub的账户,然后在服务器上使用docker登录,以便于把镜像push到dockerhub仓库,为日后迁移时提供便利。

使用Docker构建一个Git镜像使用clone仓库

随便在一个目录下,创建git.dockerfile文件

使用Docker构建一个Git镜像使用clone仓库

在dockerfile文件中,输入以下内容

使用Docker构建一个Git镜像使用clone仓库

这里简单说一下,原先提供了一个基于ubuntu 18.04的镜像,但是体积太大了,所以换成了alpine。国内用户需要把Linux 软件源切换成国内的镜像,否则在安装软件时,会出各种问题。这个镜像本身是为了clone项目,所以只安装git和ssh。后面就是为了clone私有仓库做准备,并且开放对应的ssh目录卷。由于设置了工作目录,因此git clone时默认项目是在/git/repo这个目录下,使用镜像时,挂载这个目录即可。

构建镜像

输入命令: docker build -t wuliangxue/git:0.1-alpine -f git.dockerfile .

使用Docker构建一个Git镜像使用clone仓库

出现Successfully时,代表镜像构建成功

使用Docker构建一个Git镜像使用clone仓库

这里比较一下基于ubuntu 18.04构建的镜像大小,标签为0.1的是基于ubuntu 18.04构建的【187M】,标签为0.1-alpine是基于alpine:3.12构建的【30.1M】

使用Docker构建一个Git镜像使用clone仓库

使用镜像

首先,使用刚才构建的镜像clone一个公有仓库,执行下面的命令


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

使用Docker构建一个Git镜像使用clone仓库

这个仓库被clone下来了。

使用Docker构建一个Git镜像使用clone仓库

如果你想查看clone的细节,可以在刚才的那条命令中,加上-it


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

使用Docker构建一个Git镜像使用clone仓库

当需要clone私有仓库时,该怎么办呢??
可以把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 clone git@gitee.com:wuliangxue/douyu.git

使用Docker构建一个Git镜像使用clone仓库

注意,这里必须加参数-it,因为第一次clone私有仓库时,git不知道这个地址的真实性(known_hosts文件没有记录,第一次使用也没有这个文件),因此会询问,如果没有参数-it,没有开启终端交互功能,那么clone将会直接失败。

输入yes,回车即可把私有仓库clone下来。

使用Docker构建一个Git镜像使用clone仓库

最后,再把这个轮子push到dockerhub,以便下次换服务器时,直接pull使用。

使用Docker构建一个Git镜像使用clone仓库

来源:https://blog.csdn.net/shenTiBeiTaoKongLa/article/details/107892161

标签:Docker,构建,Git镜像
0
投稿

猜你喜欢

  • 服务器安全经验:防止非法登陆

    2009-01-07 13:53:00
  • 百度客服:峰哥,我知道为什么不收新站

    2007-12-17 12:55:00
  • 学而时习之 非常简单的20套SEO问答知识

    2009-01-28 19:27:00
  • ProFtpd快速指南(七)

    2007-09-28 13:37:00
  • Discuz与UCenter同步删除用户

    2009-08-27 13:00:00
  • 站长策划网站 抓住四点不要放松

    2009-03-02 18:04:00
  • Google App Engine使用简介

    2009-08-03 13:51:00
  • 配置DNS辅助域名服务器和子域名服务器

    2009-02-10 15:46:00
  • 谷歌公司呼吁:立即行动起来正视搜索公正

    2008-11-17 13:59:00
  • 使用WP-PageNavi分页插件给WordPress创建分页

    2010-03-21 09:09:00
  • 小谈个人网站轻松发展

    2008-01-09 12:49:00
  • WordPress模板的image.php

    2011-09-22 20:41:26
  • Windows7正式发布 被称10余年来最重要产品

    2009-10-28 11:12:00
  • Google官方解释:网站PR值真的没那么重要

    2009-02-23 17:22:00
  • 在VMware+centOS 8上基于http协议搭建Git服务的方法

    2023-12-04 12:51:24
  • Linux中移除(删除)符号链接的命令

    2023-02-13 17:25:05
  • 典型的 SQL 注入过程

    2009-11-19 13:02:00
  • 网易或是下一个分拆二次IPO的互联网企业

    2009-10-24 09:36:00
  • 成功者13个价值连城的习惯,你有几个

    2008-07-22 12:27:00
  • WIN 2003中的服务器群集功能

    2007-08-28 14:52:00
  • asp之家 网站运营 m.aspxhome.com