使用Gogs Docker镜像配置git服务器

公司刚成立,急需要一台自己的git服务。之前使用Gitlab,不过搭建实在太过麻烦,在网上搜到Gogs有docker镜像,正好前两天学习了Docker,决定使用Docker+Gogs搞一搞。

认识Docker

简单概括:

Docker本身是个虚拟机工具,Docker也是一个镜像管理工具。
如果有安装虚拟机的经验的小伙伴可能会比较好理解,Docker的镜像其实就是类似于一个系统盘一样。虚拟机工具还原的是一个完整的系统,一个普通电脑运行2个虚拟系统就会卡成翔。而docker安装在linux上,它借用了linux系统内核,一些底层服务直接用调用linux内核完成,这样子的系统就可以把镜像压缩到足够小(因为只有引用层代码,没有系统底层代码)。而Docker镜像启动之后我们称之为容器,容器相应的无论大小还是内存都比传统虚拟机占优势。这样一个linux系统同时运行几十甚至几百个容器,还受Docker命令的统一管理。
所以使用Docker也就必须要熟悉它的命令行工具:
Docker 命令大全

如何安装

查看上篇文章:Linux 安装 Docker

认识 Gogs

Gogs标榜:易安装、跨平台、轻量级。最最重要的是它开源。
Gogs介绍(官网):https://gogs.io/

安装Gogs

使用docker pull把镜像下载下来

1
docker pull gogs/gogs

启动Gogs容器

Docker本身使用了linux内核,所以一些linux的特性他也是具备的,比如挂载磁盘。
Docker在常见一个容器服务时使用的是docker run命令,它的options就提供了一个 -v | -volume 的参数,就是用来挂在磁盘。
这个有什么用呢,简单讲,你用Gogs镜像创建了一个容器,Gogs的数据都是存放在默认的data目录下,当我们那天升级或误删容器之后,我们的数据就无法找回了。
-v | -volume 这个命令就可以将容器中的 data 目录挂载到linux主机上的其他任意目录,这样子就可以保证升级、误删、数据迁移我的数据都不会变。

1
docker run --name=gogs -p 10022:22 -p 10080:3000 -v /data/gogs:/data gogs/gogs

这里还要注意:
--name:是用来给容器做别名了,理论上每个容器都有一个CONTAINER ID,这个是hash值,太长不好记,所以用哥别名。
-p:是映射端口,10022映射的是容器中的22端口 10080映射的是容器中的3000端口,我们配置gogs的时候会用到他们

启动 Gogs

1
2
3
docker start gogs
docker ps
docker ps //查看启动状态

访问Gogs进行配置

默认地址是: http://${ip}:10080
使用阿里云的小伙伴注意:阿里云需要在安全组规则配置入站规则,即服务器端口10080, ssh端口10022

数据库配置:

图片

ssh与http配置:

图片

配置成功之后,自动登陆,就可以创建自己的私有仓库了!

参考资源

阿里云图文教程(本次搭建参考此教程)
阿里云Linux CentOS 7 Docker部署使用gogs搭建自己的git服务器
Gogs使用文档