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

来源:脚本之家  责任编辑:小易  

概述

使用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 Gitlab+Jenkins+Harbor构建持久化平台操作

  • 本文相关:
  • linux平台搭建docker环境并简单使用示例
  • docker 安装 mysql 并实现远程连接教程
  • 构建一个简单的caas系统
  • 树莓派3b+安装64位ubuntu系统和docker工具的操作步骤详解
  • 使用docker部署war包项目的实现
  • docker runc容器生命周期详细介绍
  • win10家庭版安装docker遇到的问题小结
  • 简述docker安装tomcat镜像并部署web项目
  • centos下安装docker教程
  • docker安装tomcat并部署springboot项目war包的方法
  • 如何通过git仓库,自动生成docker镜像
  • 一个Dockerfile是否有必要存放到一个Git仓库中
  • 怎么把git上的docker仓库绑定到本机的
  • gitlab搭建在docker里,怎么备份
  • git是在客户端创建dev分支,推送到远地仓库中吗
  • centos7安装docker 会自带git吗
  • 一直没人说么,GitLab 8.8 现在加入 Docker Regist...
  • gitlab搭建,sshkey已经添加,但是还是不管用
  • gitlab-runner是否隔离?是否安全?
  • rstudio怎么设置工作路径
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全dockerhyper-vvmwarevirtualboxxenserverkvmqemuopenvzxencloudstackopenstack云计算技术云其它首页服务器云和虚拟化docker gitlab+jenkins+harbor构建持久化平台操作linux平台搭建docker环境并简单使用示例docker 安装 mysql 并实现远程连接教程构建一个简单的caas系统树莓派3b+安装64位ubuntu系统和docker工具的操作步骤详解使用docker部署war包项目的实现docker runc容器生命周期详细介绍win10家庭版安装docker遇到的问题小结简述docker安装tomcat镜像并部署web项目centos下安装docker教程docker安装tomcat并部署springboot项目war包的方法docker 给运行中的容器设置端口映docker获取镜像报错docker: errodocker 清理命令集锦docker.service启动失败:unit nubuntu14.04+docker的安装及使用浅谈docker-compose网络设置之nedocker容器如何优雅的终止详解docker容器访问宿主机网络的方法详解docker国内镜像拉取和镜像加centos7 安装docker 解决启动不了docker 查询或获取私有仓库(registry)中的深入理解docker的四种网络方式docker定制容器镜像的2种方法(推荐)详解docker私有仓库registry的搭建验证如何通过jenkins定期清理为none的镜像详解docker图文详解解决docker加载新的镜像后repository和ta如何使用docker搭建pypi私有仓库docker安装及基本使用方法详细介绍创建web项目的docker镜像实例讲解
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved