小知识:使用Docker构建一个Git镜像使用clone仓库

概述

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

%小知识:使用Docker构建一个Git镜像使用clone仓库-猿站网-插图

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

%小知识:使用Docker构建一个Git镜像使用clone仓库-1猿站网-插图

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

%小知识:使用Docker构建一个Git镜像使用clone仓库-2猿站网-插图

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

%小知识:使用Docker构建一个Git镜像使用clone仓库-3猿站网-插图 只能自己造个轮子了。

镜像地址

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

轮子

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

%小知识:使用Docker构建一个Git镜像使用clone仓库-4猿站网-插图

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

%小知识:使用Docker构建一个Git镜像使用clone仓库-5猿站网-插图

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

%小知识:使用Docker构建一个Git镜像使用clone仓库-6猿站网-插图

这里简单说一下,原先提供了一个基于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仓库-7猿站网-插图

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

%小知识:使用Docker构建一个Git镜像使用clone仓库-8猿站网-插图

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

%小知识:使用Docker构建一个Git镜像使用clone仓库-9猿站网-插图

使用镜像

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

?
1
2
3
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仓库-10猿站网-插图

这个仓库被clone下来了。

%小知识:使用Docker构建一个Git镜像使用clone仓库-11猿站网-插图

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

?
1
2
3
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仓库-12猿站网-插图

当需要clone私有仓库时,该怎么办呢??

可以把ssh公私钥挂载到容器中。

执行下面的命令【注意,为了演示,公私钥我直接放在了当前目录下了】
?
1
2
3
4
5
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仓库-13猿站网-插图

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

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

%小知识:使用Docker构建一个Git镜像使用clone仓库-14猿站网-插图

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

%小知识:使用Docker构建一个Git镜像使用clone仓库-15猿站网-插图

到此这篇关于使用Docker构建一个Git镜像使用clone仓库的文章就介绍到这了,更多相关Docker构建Git镜像内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/shenTiBeiTaoKongLa/article/details/107892161

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:docker 查看容器日志命令的实现

2023-3-25 12:52:04

建站知识

小知识:超简单实现Docker搭建个人博文系统

2023-3-25 13:06:53

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索