使⽤Docker构建⼀个Git镜像使⽤clone仓库
概述
使⽤docker已经有⼀年多了,最近意识到,我在快速编排服务的时候,shell脚本⾥⽤到的git还是原⽣的
于是打算也将git容器化,在上搜罗了⼀筐,到这个镜像下载量⽐较⾼
进去看了dockerfile后,感觉不太适合需求
这⾥没有提供卷,也没有提供ssh,既不能把仓库映射到宿主机,也没有提供clone私有仓库的功能(⼩声bb:都可以做到,但是不⽅便)。其他的镜像也都⼤同⼩异。
只能⾃⼰造个轮⼦了。
镜像地址
轮⼦
⾸先需要⼀个的账户,然后在服务器上使⽤docker登录,以便于把镜像push到仓库,为⽇后迁移时提供便利。
随便在⼀个⽬录下,创建git.dockerfile⽂件
mysql社区版国内镜像下载在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 github/docker-library/mysql.git
这个仓库被clone下来了。
如果你想查看clone的细节,可以在刚才的那条命令中,加上-it
docker run -it --rm --name git \
-v "$(pwd)":/git/repo wuliangxue/git:0.1-alpine \
git clone github/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:wuliangxue/douyu.git
注意,这⾥必须加参数-it,因为第⼀次clone私有仓库时,git不知道这个地址的真实性(known_hosts⽂件没有记录,第⼀次使⽤也没有这个⽂件),因此会询问,如果没有参数-it,没有开启终端交互功能,那么clone将会直接失败。
输⼊yes,回车即可把私有仓库clone下来。
最后,再把这个轮⼦push到dockerhub,以便下次换服务器时,直接pull使⽤。
到此这篇关于使⽤Docker构建⼀个Git镜像使⽤clone仓库的⽂章就介绍到这了,更多相关Docker构建Git镜像内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论