Gitlab是目前比较好用的Git代码托管工具,本篇主要介绍下采用docker方式部署托管平台的方案。
详细文档见 https://docs.gitlab.com/omnibus/docker/README.html#gitlab-docker-images
操作系统
操作系统: Debian8.7 64位
Docker官方网站 https://docs.docker.com/engine/installation/ 上有各种环境下的安装指南,可以参考下。这里主要采用 Debian 8 Jessie 来介绍。
内核
Debian8 的内核默认为 3.16,满足基本的 Docker 运行条件。但是如果打算使用overlay2 存储层驱动,或某些功能不够稳定希望升级到较新版本的内核,可以添加 backports 源,升级到新版本的内核。
由于国内访问国际资源的速度问题,我们采用国内镜像站的资源来作源。
执行下面的命令添加 backports 源:
1 | $ echo "deb http://mirrors.163.com/debian jessie-backports main" | sudo tee /etc/apt/sources.list.d/backports.list |
升级到 backports 内核:
1 | $ sudo apt-get update |
需要注意的是,升级到 backports 的内核之后,会因为 AUFS 内核模块不可用,而使用默认的 devicemapper 驱动,并且配置为 loop-lvm ,这是不推荐的。因此,不要忘记安装 Docker 后,配置 overlay2 存储层驱动。
配置 GRUB 引导参数
在 Docker 使用期间,或者在 docker info 信息中,可能会看到下面的警告信息:
1 | WARNING: Your kernel does not support cgroup swap limit. |
或者
1 | WARNING: No memory limit support |
如果需要这些功能,就需要修改 GRUB 的配置文件 /etc/default/grub
,在 GRUB_CMDLINE_LINUX
中添加内核引导参数 cgroup_enable=memory swapaccount=1
。
然后更新 GRUB:
1 | $ sudo update-grub |
Docker安装
使用阿里云的脚本安装
1 | $ curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh - |
安装好后,查看docker版本
1 | $ sudo docker version |
建立Docker用户组
默认情况下, docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。
建立 docker 组:
1 | $ sudo groupadd docker |
将当前用户加入 docker 组:
1 | $ sudo usermod -aG docker $USER |
镜像加速器
国内访问 Docker Hub 有时会遇到困难,此时可以配置镜像加速器。这里采用阿里云加速器: https://cr.console.aliyun.com/#/accelerator
在阿里云账户中可以申请加速器,会得到如 https://lygalhlu.mirror.aliyuncs.com
这样的地址,我们将该信息配置给Docker引擎。
对于使用 systemd 的系统,用 systemctl enable docker
启用服务后,编辑/etc/systemd/system/multi-user.target.wants/docker.service
文件,找到 ExecStart=
这一行,在这行最后添加加速器地址 --registry-mirror=<加速器地址>
,如:
1 | ExecStart=/usr/bin/dockerd --registry-mirror=https://lygalhlu.mirror.aliyuncs.com |
重新加载配置并重启
1 | $ sudo systemctl daemon-reload |
检查加速器是否生效
Linux系统下配置完加速器需要检查是否生效,如果配置中看到 --registry-mirror
的参数,则说明配置成功。
1 | $ sudo ps -ef | grep dockerd |