Debian9 使用 Docker 安装 gitlab完整过程
Posted lvchaoshun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Debian9 使用 Docker 安装 gitlab完整过程相关的知识,希望对你有一定的参考价值。
一. 安装Docker CE (参考 官网指南)
1. 卸载老版本
sudo apt-get remove docker docker-engine docker.io
2. Update the apt
package index:
sudo apt-get update
3. Install packages to allow apt
to use a repository over HTTPS:
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
4. Add Docker’s official GPG key:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
Verify that you now have the key with the fingerprint 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
, by searching for the last 8 characters of the fingerprint.
sudo apt-key fingerprint 0EBFCD88
pub 4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb) <[email protected]>
sub 4096R/F273FCD8 2017-02-22
5. Use the following command to set up the stable repository. You always need the stable repository, even if you want to install builds from the edge or test repositories as well.
To add the edge or test repository, add the word edge
or test
(or both) after the word stable
in the commands below.
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable
b. armhf:
echo "deb [arch=armhf] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
6. Update the apt
package index.
sudo apt-get update
7. Install the latest version of Docker CE:
sudo apt-get install docker-ce
8. Verify that Docker CE is installed correctly by running the hello-world
image:
x86_64:
sudo docker run hello-world
armhf:
sudo docker run armhf/hello-world
9. 卸载Docker (以后需要卸载的话,再来看看)
a. Uninstall the Docker CE package:
sudo apt-get purge docker-ce
b. Images, containers, volumes, or customized configuration files on your host are not automatically removed. To delete all images, containers, and volumes:
sudo rm -rf /var/lib/docker
必须手动写在其他的配置文件.
二. 安装gitlab
1. 执行下面的命令,从 docker 的镜像仓库中下载 gitlab 社区版的镜像
docker pull gitlab/gitlab-ce:latest
比较大,1G左右, 喝杯咖啡享受下人生
2. 数据持久化保存
因为容器的数据是不能持久化保存的。所以我们需要用 docker volume 的方式将存储的数据映射到操作系统的目录中来。这样就算运行的容器崩溃,我们重新启动一个新的容器,原来容器中的数据还是不会丢失
我们建立目录 /backup/gitlab 来保存 gitlab 容器中的数据
3. 映射 sshd
为了允许 git 采用 ssh 协议来操作 git 仓库,我们将主机的 sshd 的 22 端口映射到 容器中去。将主机的 sshd 端口更改为 15678
编辑文件 /etc/ssh/sshd_config,将其中的 #Port 22 注释去掉,将数字 22 更改为 15678
执行下面的命令重启 sshd 服务:
systemctl restart sshd
运行下面的命令使 15678 端口可以对外提供服务,否则无法进行远程的 ssh 登录:
semanage port -a -t ssh_port_t -p tcp 15678 firewall-cmd --permanent --add-port=15678/tcp firewall-cmd --reload
4. 运行gitlab
docker run --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --volume /backup/gitlab/config:/etc/gitlab --volume /backup/gitlab/logs:/var/log/gitlab --volume /backup/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
这里把主机的 443、80、22 端口直接转发到容器,同时利用 --volume /backup/gitlab/config:/etc/gitlab 、
三. 管理员配置 gitlab
1. 登录 gitlab
等待 docker 容器启动完成后,访问 http://ip 就进入 gitlab 访问界面。第一次访问是让我们修改管理员密码。如下所示
设置后管理员密码后,就进入登录页面,输入用户名 root 和刚才设置的密码就进入了 gitlab 的控制台。如下图所示
2. 创建组( group)
gitlab 里面有三类对象:组( group)、项目( project)和用户 (people)。
为了方便管理,我们应该基于组来创建项目。一个项目就是一个 git 的仓库。基于组创建项目 ,然后将用户设置合适的权限后加入到组里面。这样用户就有了组里面所有项目的对应权限。
点击 “Create a group” 链接,如下图所示创建一个“健康医疗开发组” 的组
3. 创建用户(people)
点击 “Add people” 链接,如下图所示创建一个 “yanggch” 的用户
因为还没有配置好邮件服务,所以还不能发送用户初始化密码的邮件。我们需要编辑用户,手动设置一个密码。如下图所示。如果用户忘记了密码,充值密码也可以在这里进行。
3. 将用户加入组
为了方便管理,需要将用户加入到对应的组里面。如下图所示,在组管理界面中,点击组的名称,进入组用户设置界面。将刚才创建的用户 “yanggch” 加入到组 “健康医疗开发组”中,并且给他设置为 “Master” 角色。只有 “Master” 或者 “Owner” 角色才能推送 git 的更新。
4. 创建项目(project)
增加 gitlab 组的时候,为了让项目让组里面的人都能访问,注意要将项目建立在组之下。如下图所示,在“健康医疗开发组”之下建立了 “redis_util” 的项目。
这样项目建好之后就可以被组里的用户访问了。
四. 客户端访问
1. 安装 git 客户端
这里演示在 window上安装 git 客户端。首先根据 window 版本下载 git 客户端安装程序。这里我下载的是
https://github.com/git-for-windows/git/releases/download/v2.15.1.windows.2/Git-2.15.1.2-64-bit.exe
2. 命令行访问
安装后,在准备 clone 项目的目录下点击鼠标右键,出现下面的右键菜单。
点击 “Git Bash Here” 进入 git 命令行环境。我们会从 redis_util 项目中看到该项目基于 http 协议的 clone 命令是
git clone http://7a45cd079bdc/healthcare_dev/redis_util.git
这里的 7a45cd079bdc 实际上是 docker 容器的机器名。实际执行的时候我们把这个字符串更换成容器所在主机的 ip 地址即可。如下所示
git clone http://10.110.2.50/healthcare_dev/redis_util.git
这种情况下会要求输入登录的用户名和密码。这里输入刚才创建的用户的用户名和密码即可。在使用前,需要用这个用户登录 gitlab 控制台修改一下初始密码才能使用。
出现如下提示表示从 gitlab clone 项目成功
Cloning into ‘redis_util‘...
warning: You appear to have cloned an empty repository.
3. 免密码登录
刚才那种方式通过 http 协议和 gitlab 进行通信,每次都要输入用户名和密码,非常不方便。用户可以设置通过 ssh 进行交互,将ssh key 加入到用户的 sshkey 设置列表中。
参考“命令访问” 章节进入 git 的 bash 环境。执行下面的命令进入 ssh key 存储目录
cd ~/.ssh
目录中 id_rsa.pub 是 ssh 访问的公钥。如果不存在则执行下面的命令生成
ssh-keygen -t rsa
全部回车后,会生成 id_rsa.pub 文件。
将文件中的内容拷贝到剪贴板。然后通过前面创建的用户名和密码登录 gitlab 控制台。在下面的界面中,将 id_rsa.pub 文件的内容填入文本框
保存后。再通过 ssh 协议操作 git 仓库,将不再需要输入用户名和密码。如下所示
4. 推送一次提交
首先配置当前仓库的用户名和用户邮箱配置
cd redis_util
git config --local user.name "yanggch"
git config --local user.email "[email protected]"
然后在 redis_util 目录下加入一个 readme.txt,执行下面的命令提交并将更新推送到 gitlab 远程服务器
#将新文件加入到版本管理
git add readme.txt
#提交
git commit -m"第一次提交"
#将当前分支 master 推送到远程仓库
git push
#以 master 分支为基础建立一个新的 dev 本地分支
git checkout -b dev
#将本地仓库分支推送到远程仓库,在远程仓库建立对应的 dev 分支
git push --set-upstream origin dev
到 gitlab 控制台查看 redis_util 的状态。如下图所示
到此,我们就完成了一个公司级别的 gitlab 服务器的搭建工作。同事们可以在这个上面流畅的进行开发了。