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.

  a. x86_64 / amd64:

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 、

                              --volume /backup/gitlab/logs:/var/log/gitlab 、
                                                                                               --volume /backup/gitlab/data:/var/opt/gitlab
这三个参数将 gitlab 的配置、数据和日志持久化到主机文件系统上来。

三. 管理员配置 gitlab

1. 登录 gitlab

等待 docker 容器启动完成后,访问 http://ip 就进入 gitlab 访问界面。第一次访问是让我们修改管理员密码。如下所示

技术分享图片
初始化 gitlab 管理员密码

设置后管理员密码后,就进入登录页面,输入用户名 root 和刚才设置的密码就进入了 gitlab 的控制台。如下图所示

技术分享图片
gitlab 管理员控制台

2. 创建组( group)

gitlab 里面有三类对象:组( group)、项目( project)和用户 (people)。

为了方便管理,我们应该基于组来创建项目。一个项目就是一个 git 的仓库。基于组创建项目 ,然后将用户设置合适的权限后加入到组里面。这样用户就有了组里面所有项目的对应权限。

点击 “Create a group” 链接,如下图所示创建一个“健康医疗开发组” 的组

技术分享图片
gitlab 创建组

3. 创建用户(people)

点击 “Add people” 链接,如下图所示创建一个 “yanggch” 的用户

技术分享图片
gitlab 增加用户

因为还没有配置好邮件服务,所以还不能发送用户初始化密码的邮件。我们需要编辑用户,手动设置一个密码。如下图所示。如果用户忘记了密码,充值密码也可以在这里进行。

技术分享图片
gitlab 修改用户信息

3. 将用户加入组

为了方便管理,需要将用户加入到对应的组里面。如下图所示,在组管理界面中,点击组的名称,进入组用户设置界面。将刚才创建的用户 “yanggch” 加入到组 “健康医疗开发组”中,并且给他设置为 “Master” 角色。只有 “Master” 或者 “Owner” 角色才能推送 git 的更新。


技术分享图片
image.png

4. 创建项目(project)

增加 gitlab 组的时候,为了让项目让组里面的人都能访问,注意要将项目建立在组之下。如下图所示,在“健康医疗开发组”之下建立了 “redis_util” 的项目。

技术分享图片
gitlab 创建项目

这样项目建好之后就可以被组里的用户访问了。

四. 客户端访问

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 http 权限验证

出现如下提示表示从 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 key

保存后。再通过 ssh 协议操作 git 仓库,将不再需要输入用户名和密码。如下所示

技术分享图片
免登陆操作 gitlab 仓库

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 的状态。如下图所示

技术分享图片
redis_util 分支状况

到此,我们就完成了一个公司级别的 gitlab 服务器的搭建工作。同事们可以在这个上面流畅的进行开发了。

以上是关于Debian9 使用 Docker 安装 gitlab完整过程的主要内容,如果未能解决你的问题,请参考以下文章

使用Telegraf + Influxdb + Grafana 监控SQLserver服务器的运行状况

如何在 Debian 9 上安装和使用 Docker

debian 9 stretch安装docker

docker gitlab迁移 备份 部署 搭建以及各种问题

Debian9安装openssl

Debian9服务器安装