docker gitlab 配置(使用Docker构建一个Git镜像使用clone仓库)
docker gitlab 配置
使用Docker构建一个Git镜像使用clone仓库概述
使用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使用。
到此这篇关于使用Docker构建一个Git镜像使用clone仓库的文章就介绍到这了,更多相关Docker构建Git镜像内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- docker部署php本地开发环境(CentOS7环境下使用Docker搭建PHP运行环境的过程详解)
- docker ip地址分配(docker添加网桥并设置ip地址范围操作)
- docker 挂载目录权限(docker windows10 共享目录挂载失败的解决方案)
- docker-compose 如何启动(docker compose部署主从复制的实现)
- elasticsearchwindows分词器配置(docker 部署 Elasticsearch kibana及ik分词器详解)
- docker安装mysql后无法连接(Docker 安装 MySQL 并实现远程连接教程)
- docker挂载的注意事项(解决docker日志挂载的问题)
- docker1.12.5容器假死(解决docker run后容器出现Exited 0情况的问题)
- docker离线安装步骤(Windows下Docker安装各种软件的详细过程)
- 安全进入docker容器的方法(使用docker部署一个简单的c/c++程序的方法)
- docker中的mongodb(Docker mongoDB 4.2.1 安装并收集springboot日志的步骤详解)
- docker进入容器内部后的命令(Docker部署Consul配置过程解析)
- 如何编写docker-compose(使用Docker Compose搭建 Confluence的教程)
- docker的漏洞(一次docker错误的耗时排查过程记录)
- docker进入容器的方法(在docker容器中安装vi命令的简单操作)
- docker搭建编译开发环境(Shell脚本构建Docker 半自动化编译打包发布应用操作)
- 《极限挑战》深访都市夜归人,夜间打工者体验,黄磊录完憔悴了(极限挑战深访都市夜归人)
- Google 推出了一个游戏生成器,让不会编程的你也能自己设计游戏(推出了一个游戏生成器)
- 二胎家庭老大爱闹情绪,用这招很有效(二胎家庭老大爱闹情绪)
- 一个30岁男人外遇失败的全过程(一个30岁男人外遇失败的全过程)
- 《无敌破坏王2》 不聊彩蛋,聊聊我从动画里看到的现实那些事儿(无敌破坏王2不聊彩蛋)
- 《寄生虫》 三观不正 人类悲欢从来不相通,感同身受也并非本能(寄生虫三观不正)
热门推荐
- vue 富文本图片上传(vue.js云存储实现图片上传功能)
- 工作如何分轻重缓急
- python进行回归分析(Python多项式回归的实现方法)
- mysql分区表的优缺点(MySQL数据表分区策略及优缺点分析)
- 数据库索引如何使用
- phpstudy使用教程学习(phpStudy 2016 使用教程详解支持PHP7)
- phpstudymysql数据库启动不了(phpstudy mysql启动不了的解决方法)
- laravel的验证规则(解决在Laravel 中处理OPTIONS请求的问题)
- python协程详解(为什么你还不懂得怎么使用Python协程)
- mysql数据库出现乱码(数据库 MySQL中文乱码解决办法总结)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9