Установка выполняется в операционной системе Ubuntu Bionic.

LXC

Создание базового контейнера:

lxc-create -t download -n bionic-base -- --dist ubuntu --release bionic --arch amd64

Создание контейнеров для GitLab и GitLab Runner:

lxc-copy -n bionic-base -N gitlab-bionic -s
lxc-copy -n bionic-base -N gitlab-runner-bionic -s

Файл /var/lib/lxc/gitlab-bionic/config:

# Distribution configuration
lxc.include = /usr/share/lxc/config/common.conf

lxc.arch = linux64
lxc.start.auto = 1

# Network configuration
lxc.net.0.type = veth
lxc.net.0.link = br0
lxc.net.0.flags = up
lxc.net.0.ipv4.address = 192.168.0.216/24
lxc.net.0.ipv4.gateway = 192.168.0.1
lxc.net.0.hwaddr = 00:16:3e:00:02:16

# Container specific configuration
lxc.rootfs.path = overlay:/var/lib/lxc/bionic-base/rootfs:/var/lib/lxc/gitlab-bionic/delta0
lxc.uts.name = gitlab-bionic

lxc.autodev = 1
lxc.pty.max = 16384
lxc.cgroup.devices.allow = c 10:200 rwm
lxc.mount.entry = /dev/net dev/net none bind,create=dir

Файл /var/lib/lxc/gitlab-runner-bionic/config:

# Distribution configuration
lxc.include = /usr/share/lxc/config/common.conf

lxc.arch = linux64
lxc.start.auto = 1

# Network configuration
lxc.net.0.type = veth
lxc.net.0.link = br0
lxc.net.0.flags = up
lxc.net.0.ipv4.address = 192.168.0.217/24
lxc.net.0.ipv4.gateway = 192.168.0.1
lxc.net.0.hwaddr = 00:16:3e:00:02:17

# Container specific configuration
lxc.rootfs.path = overlay:/var/lib/lxc/bionic-base/rootfs:/var/lib/lxc/gitlab-runner-bionic/delta0
lxc.uts.name = gitlab-runner-bionic

# Required for Docker
lxc.aa_profile = unconfined
lxc.cgroup.devices.allow = a
lxc.cap.drop =

lxc.autodev = 1
lxc.pty.max = 16384
lxc.cgroup.devices.allow = c 10:200 rwm
lxc.mount.entry = /dev/net dev/net none bind,create=dir

GitLab

Установить GitLab:

sudo lxc-start -n gitlab-bionic
sudo lxc-attach -n gitlab-bionic
sudo apt install curl
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt install gitlab-ce

Отредактировать файл /etc/locale.gen и сгенерировать локали для системы:

sudo locale-gen

Отредактировать файл /etc/gitlab/gitlab.rb и выполнить:

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

GitLab Runner и Docker

Установить GitLab Runner:

sudo lxc-start -n runner-bionic
sudo lxc-attach -n runner-bionic
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt install gitlab-runner docker.io
sudo gitlab-runner register

Во время установки ввести токен приведённый на странице admin/runners, а в качестве исполнителя задач docker.

Для работы Docker внутри контейнера нужно удалить AppArmor:

sudo apt purge apparmor

Внутри контейнера для Docker желательно использовать драйвер btrfs cat /etc/docker/daemon.json

\{ storage-driver'': btrfs'' }