使用Docker构建一个Git镜像使用clone仓库
作者:yijianguanzhu 发布时间:2023-09-04 23:00:50
概述
使用docker已经有一年多了,最近意识到,我在快速编排服务的时候,shell脚本里用到的git还是原生的
于是打算也将git容器化,在dockerhub上搜罗了一筐,找到这个镜像下载量比较高
进去看了dockerfile后,感觉不太适合需求
这里没有提供卷,也没有提供ssh,既不能把仓库映射到宿主机,也没有提供clone私有仓库的功能(小声bb:都可以做到,但是不方便)。其他的gitclient镜像也都大同小异。
只能自己造个轮子了。
镜像地址
本文的镜像以push到dockerhub,有需要可直接使用: https://hub.docker.com/r/wuliangxue/git
轮子
首先需要一个dockerhub的账户,然后在服务器上使用docker登录,以便于把镜像push到dockerhub仓库,为日后迁移时提供便利。
随便在一个目录下,创建git.dockerfile文件
在dockerfile文件中,输入以下内容
这里简单说一下,原先提供了一个基于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 .
出现Successfully时,代表镜像构建成功
这里比较一下基于ubuntu 18.04构建的镜像大小,标签为0.1的是基于ubuntu 18.04构建的【187M】,标签为0.1-alpine是基于alpine:3.12构建的【30.1M】
使用镜像
首先,使用刚才构建的镜像clone一个公有仓库,执行下面的命令
docker run --rm --name git \
-v "$(pwd)":/git/repo wuliangxue/git:0.1-alpine \
git clone https://github.com/docker-library/mysql.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
当需要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
注意,这里必须加参数-it
,因为第一次clone私有仓库时,git不知道这个地址的真实性(known_hosts文件没有记录,第一次使用也没有这个文件),因此会询问,如果没有参数-it
,没有开启终端交互功能,那么clone将会直接失败。
输入yes,回车即可把私有仓库clone下来。
最后,再把这个轮子push到dockerhub,以便下次换服务器时,直接pull使用。
来源:https://blog.csdn.net/shenTiBeiTaoKongLa/article/details/107892161


猜你喜欢
- UDP协议的特点UDP 不提供可靠性的传输,它只是把应用程序传给 IP 层的数据报发送出去,但是并不能保证它们能到达目的地。由于 UDP 在
- 很多朋友想建ftp服务器在Internet上共享自己的资源,苦于没有公网IP,无法实现。其实,内网IP也可以建ftp服务器的。第一步:首先当
- 进入互联网是99年,开始建站是2003年,做过垃圾站,失败了,咱不是什么高手,这些年一直研究地方网站,付出一直大于回报,但我坚信沿着一条正确
- 许久没发这类日志了今天在戒聊的帮助指导下终于将Gravatar整合进了PJBlog3的评论中~话不多说,修改教程奉上!(不知道什么是Grav
- 最近因为工作要求需要用学习使用docker,最后卡在了网络配置这一块。默认情况下启动容器的时候,docker容器使用的是bridge策略比如
- 惊云下载系统edit.asp文件存在SQL注入漏洞,后台存在任意文件上传漏洞。惊云下载系统以前有个漏洞好象在user.asp,不知现在修补没
- 首先我们来看下外部链接,外部链连接需要注意以下几点:1 链接数量多少按照关键词从其他网页链接到该网页中出现的数量来判断网页对该关键词的相关性
- 本文主要是记录一下在apache二级目录上面部署react和vue项目。根目录下面部署很简单,但是在二级目录下就需要在webpack的配置或
- 笔者服务于一家小的电脑公司,随着业务的不断拓展,公司传统办公模式的弊端逐步显露出来:员工经常出差导致命令无法迅速上传下达;下级汇报工作时负责
- 有时候通过top命令可以看到有个别进程占用的内存比较大,但是top无法直接查看到进程名以及进程所在的目录。所以我们可以通过以下方法来定位。首
- 前面不少的朋友一直咨询我一个问题,就是很多网站在争夺相同关键词时,为什么有的网站仅仅几个页面,单它的排名也能超过这些收录上万页面的网站呢?这
- 由于周边环境的原因,我接触网络不是很久,可以这样说,高中以前连电脑是什么样子也没见过,只听同学讲过,以及课外书上描述的。电脑于我来说似乎是可
- 1、传统媒体的运用在现阶段的中国,传统媒体宣传的影响力仍然远大于网络,特别是对于面向国内的站点,电视、报纸、杂志等这些媒体的效应可以说是立竿
- 随着网络的发展和各种信息媒体的诞生,人们进行信息交流的方式和途径也越来越多,但是,由于现今的各种通信费用一直居高不下,且人们的生活节奏日趋加
- IIS Web服务器安全加固步骤:步骤安装和配置 Windows Server 2003。注意:1.将\System32\cmd.exe转移
- 1月6日消息,据国外媒体报道,微软将在今年发布新版本的Office套装软件,零售价格为99美元-499美元,业内人士猜测发布日期可能为6月。
- 大约一周前,Google正式宣布,已经开始在搜索结果排序中考虑网站的网速。这个很久之前就在站长圈传开的消息,终于得到了证实。为了测试网页加载
- 我们终于进入了这个社会。从此结束了被学校老师看管的生涯,结束了做父母乖宝贝的日子,也结束从父母兄长那里拿钱的幸福时光。我们从家里搬了出来,提
- 李开复(腾讯科技配图)“创新工场现在是房子不小,人不多,这个星期我们雇用了第七个人。”节前,李开复对
- 世界上没有绝对安全的系统,即使是普遍认为稳定的Linux系统,在管理和安全方面也存在不足之处。我们期望让系统尽量在承担低风险的情况下工作,这