2016-07-11
Сначала разберёмся - что же такое сам Docker. Википедия на этот вопрос отвечает однозначно:
Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы, например LXC. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любой Linux-системе с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами.
В двух словах, Докер - это такая утилита для создания и управления очень легковесными виртуальными машинами.
На момент публикации актуальным docker-пакетом для Ubuntu 16.04 является docker версии 1.11.2. Установка текущей версии докера не требует никаких специальных знаний, и проста как валенок.
# Добавляем в систему GPG-ключ для официального docker-репозитория
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
# Добавляем репозиторий в список источников
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
# Актуализируем список пакетов и устанавливаем обновлённые версии всех пакетов
sudo apt-get update && sudo apt-get upgrade -y
# Устанавливаем Docker
sudo apt-get install -y docker-engine
# По завершении установки проверяем статус докер-демона
sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2016-05-01 06:53:52 CDT; 1 weeks 3 days ago
Docs: https://docs.docker.com
Main PID: 749 (docker)
По умолчанию докер можно запускать только из-под root'а, но это не всегда удобно и безопасно. Поэтому мы можем разрешить текущему пользователю запускать docker, добавив его в группу docker.
sudo usermod -aG docker $(whoami)
Для того, чтобы изменения применились нам придётся перелогиниться в консоль.
Проверить работу docker можно командой:
docker version
Client:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 22:00:43 2016
OS/Arch: linux/amd64
Server:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 22:00:43 2016
OS/Arch: linux/amd64
Всё, установка Docker завершена.
Что же, собственно, до самого GitLab - его инсталляция проходит в два этапа.
Создаём папку для хранения данных.
sudo mdkir /srv/gitlab
Запускаем докер образ, предварительно заменив HOSTNAME на адрес нашего сервера.
docker run --hostname=HOSTNAME --detach --publish 443:443 --publish 80:80 \
--publish 2222:22 --name gitlab --restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
--memory="1024m" gitlab/gitlab-ce:latest
Эта команда запустит контейнер на основе образа gitlab/gitlab-ce:latest с лимитом по памяти в 1 гигабайт. Докер пробросит из него порты 80 и 443 для доступа через web-браузер, а также порт 2222 сервера будет указывать на порт 22 контейнера, для подключения посредством ssh и работы git-ssh. Контейнер будет автоматически запускаться при перезапуске сервера. Флаги --volume используется для хранения данных между перезапусками контейнера, а также для доступа к ним из внешнего сервера, например, для резервного копирования.
Я использовал образ бесплатной Community редакции GitLab. При необходимости можно вместо него взять и Enterprise версию, заменив gitlab/gitlab-ce:latest на gitlab/gitlab-ee:latest в предыдущей команде.
После загрузки образа из интернета и запуска контейнера, GitLab будет доступен в браузере по адресу HOSTNAME.
Если возникнут какие-то вопросы или сложности, пишите в комментариях постараюсь помочь.