2016-07-11

Установка docker без хлопот

Сначала разберёмся - что же такое сам Docker. Википедия на этот вопрос отвечает однозначно:

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы, например LXC. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любой Linux-системе с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами.

В двух словах, Докер - это такая утилита для создания и управления очень легковесными виртуальными машинами.

Установка docker

На момент публикации актуальным 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

Что же, собственно, до самого 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.

Если возникнут какие-то вопросы или сложности, пишите в комментариях постараюсь помочь.