一, 前言
Git 在如日中天的版本管理系统, 现在如果不是工作在 Git 版本管理系统下, 几乎都不好意思给人打招呼. 现在就有现成的互联网的 Git 服务器提供给大家使用, 例如号称程序的社交网络 GitHub.
正好 GitLab 公司提供了 GitLab 社区版, GitLab 安装方式又很多安装方式, 最方便的使用 docker 方式安装, 现在讲步骤记录下, 希望对有需求的人有所帮助.
二, docker 安装
首先是安装 docker 环境了. 我是在 CentOS 7 的基础上安装的. 根据官网的指南
1, 增加 docker yum 源
新的 docker yum 源叫做 docker-ce, 如果第一次安装 docker-ce 需要设置 docker-ce 的 yum 源. 用如下命令来增加 docker-ce 的 yum 源
- yum install -y yum-utils device-mapper-persistent-data lvm2
- yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- yum-config-manager --enable docker-ce-edge
- yum-config-manager --enable docker-ce-test
2, 如果你之前安装过 docker, 删除旧版本的 docker
旧版本的 docker 的叫做 docker 或者 docker-engine, 如果系统中已经安装旧版本, 则需要删除. 通过一下命令删除旧的 docker 版本.
yum remove docker docker-common docker-selinux docker-engine
3, 安装 docker-ce
首先我们检查一下所有有效的 docker-ce 的版本
yum list docker-ce --showduplicates | sort -r
我们选择最新的额稳定版是 18.06.1.ce. 我们使用下面的命令安装该版本
yum install docker-ce-18.06.1.ce
这个安装时间比较长吧, 静静等待, 大约花费 4min
4, 启动 docker
执行如下的命令启动 docker 的服务
systemctl start docker
执行如下命令, 查看 docker 信息
docker info
目前我没有修改 docker 配置, 我觉得 docker 下载镜像速度还行, 并没有网上说的很慢, 暂时不修改运行目录和镜像仓库地址
上述完成了 docker 安装. 接下来安装 GitLab
三, 安装 GitLab
1, 下载镜像
docker pull GitLab/GitLab-ce:latest
镜像有 1g 多, 需要等待一段时间
2, 数据持久化保存
因为 docker 容器的数据是不能持久化保存的. 所以我们需要使用 docker volume 的方式将存储的数据映射到操作系统的目录中来. 这样就算运行的容器奔溃了, 我们从新启动一个新的容器. 原来容器的数据还是不会丢失
我们建立目录 / home/databaken/GitLab 来保存 GitLab 容器中的数据
3, 准备映射 sshd
在系统防火墙中打开 HTTP 和 SSH 访问, Git 是采用 SSH 协议来操作 Git 仓库的, 我们将主机的 sshd 的 22 端口映射到容器中去. 将主机的 sshd 端口更改为 15678. 这里是 centos7 的更严格的安全机制, 算是一个坑, 按照下面步骤进行
(1) 编辑文件 / etc/SSH/sshd_config, 将其中的 #port 22 注释去掉, 将数字 22 修改为 15678
(2) 执行命令重启 sshd 服务
systemctl restart sshd
(3) 运行下面的命令是 15678 端口可以对外提供服务. 否则无法远程的 SSH 登陆
- semanage port -a -t ssh_port_t -p tcp 15678
- firewall-cmd --permanent --add-port=15678/tcp
- firewall-cmd --reload
告诉我 firewall 服务没有启动, 使用下面命令启动防火墙命令
- // 运行防火墙服务
- systemctl start firewalld.service
因为之前乜有开启防火墙服务, 这一启动, 4 个系统都无法访问, 需要将 80 端口和 443 端口允许外网访问到.
4, 运行 GitLab
我把本地服务防火墙的 22 端口也放开
然后运行 GitLab
- docker run \
- --publish 4433:443 --publish 9001:80 --publish 22:22 \
- --name GitLab \
- --volume /home/databaken/gitlabdata/config:/etc/GitLab \
- --volume /home/databaken/gitlabdata/logs:/var/log/GitLab \
- --volume /home/databaken/gitlabdata/data:/var/opt/GitLab \
- GitLab/GitLab-ce
这里把主机的 4433,9001,22 端口直接转发到容器, 意思就是说: 本地服务的 4433 端口, 8080 端口, 22 端口已经占用, 访问本地服务的 4433 端口就是访问 docker 容器 GitLab 的 443 端口, 访问本地服务的 9001 端口就是访问 docker 容器 GitLab 的 80 端口, 访问本地服务的 22 端口就是访问 docker 容器 GitLab 的 22 端口.
同时利用 --volume /home/databaken/gitlabdata/config:/etc/GitLab ,
- --volume /home/databaken/gitlabdata/logs:/var/log/GitLab ,
- --volume /home/databaken/gitlabdata/data:/var/opt/GitLab
这三个参数将 GitLab 的配置, 数据和日志持久化到主机文件系统上来.
按照道理, 这个时候, 你直接访问服务器的 ip:9001, 就可以访问到 GitLab, 糟糕的是自己服务器是 1 核 1G 运行内存, 哈哈.... 肯定是跑不起来 GitLab, 因为说 GitLab 要求最低是 4G 运行内存, 虽然我尝试了 swap, 构建了 2G 的虚拟内存, 但是 GitLab 跑起来还是, 容器还是奔溃了.
服务器运行内存太低, 所以暂时不考虑跑 GitLab.
相应错误可以在 https://www.mwcxs.top/topic/item/45.html 查到.
来源: https://www.cnblogs.com/chengxs/p/9879867.html